0

您好,我在 MSSQL 2008 中使用简单触发器时遇到了一些困难。

我想将删除的行插入另一个表。

这是我的触发代码:

use databasex;
GO
CREATE TRIGGER DeleteEmployee
ON Employees
 FOR DELETE 
AS
 BEGIN
    INSERT INTO DeletedEmployees (Name, Surname, Function) 
    VALUES (deleted.Name, deleted.Surname, deleted.Function)
 END

员工表:

 Name  Surname Function ...

DeletedEmployees 表:

Name Surname Function ...

我需要以某种方式指定删除的列来自已删除的表,但是如何?

我不想为每一列编写子查询。

它是如何完成的?

ps:有没有关于使用触发器的好教程?我相信我将来需要写更多的触发器。

4

1 回答 1

2

DELETED是您从中选择的虚拟表(您可能删除了不止一行,因此单个值是不够的)

另外,FUNCTION是保留字,需要转义

CREATE TRIGGER DeleteEmployee
ON Employees
 FOR DELETE 
AS
 BEGIN
    INSERT INTO DeletedEmployees (Name, Surname, [Function]) 
      SELECT Name, Surname, [Function] FROM deleted
 END

一个用于测试的 SQLfiddle

于 2013-07-10T05:45:14.430 回答