use*_*263 24 sql-server triggers
我想创建一个删除前触发器.当我从表中删除记录时,该记录必须插入到历史表中.我怎么能在SQL Server中执行此操作?
Cod*_*ian 34
在这种情况下,你可能最好做一个常规的"后"触发器.这是解决此类情况的最常见方法.
就像是
CREATE TRIGGER TRG_AUD_DEL
ON yourTable
FOR DELETE
AS
     INSERT INTO my_audit_table  (col1, col2, ...)
     SELECT col1, col2...
     FROM DELETED 
会发生什么情况,当从表中删除记录(或记录!)时,将删除已删除的行my_audit_table.DELETED表是一个虚拟表,其中包含删除之前的记录.
另请注意,触发器作为delete语句中隐式事务的一部分运行,因此如果删除失败并回滚,则触发器也将回滚.
Ari*_*ion 14
你也可以用 INSTEAD OF DELETE
CREATE TRIGGER dbo.SomeTableYouWhatToDeleteFrom
ON dbo.YourTable
INSTEAD OF DELETE
AS
BEGIN
     -- Some code you want to do before delete
     DELETE YourTable
     FROM DELETED D
     INNER JOIN dbo.YourTable T ON T.PK_1 = D.PK_1
END