sql server 2005触发器问题,还请各位高手指教
当a表的字段a1,a2,a3被修改或该条记录被删除时,把修改或删除之前的该条记录拷贝到另外一个历史表中
历史表的结果和a表完全一样
求这样的触发器如何编写
[解决办法]
类似这样
CREATE TRIGGER trg_history ON table1for UPDATE, deleteasbegin if update(a1) or update(a2) or update(a3) begin INSERT INTO history_bak(....) --列跟原表一致即可。 SELECT * FROM DELETED end IF EXISTS(SELECT 1 FROM DELETED ) AND NOT EXISTS(SELECT 1 FROM INSERTED) BEGIN INSERT INTO history_bak(....) --列跟原表一致即可。 SELECT * FROM DELETED END end
[解决办法]
if OBJECT_ID('tri_test') is not nulldrop trigger tri_testgocreate trigger tri_test on tbfor update,deleteasif (exists(select 1 from deleted) and exists(select 1 from inserted))--如果是修改 or( exists(select 1 from deleted) and not exists(select 1 from inserted)--如果是删除 )begininsert 历史表select a1,a2,a3 from deletedendgo