2013-07-10 182 views
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:有没有使用触发器的好教程?我相信我将来需要编写更多触发器。

回答

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

+1

哇谢谢:-) – Muflix