触发器插入已删除的行

时间:2013-07-10 05:37:50

标签: sql-server-2008

您好我在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:有没有关于使用触发器的好教程?我相信我将来需要写更多的触发器。

1 个答案:

答案 0 :(得分: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

An SQLfiddle to test with