CREATE TRIGGER triggerName --触发器名称
ON tblGoods --表名,这个触发器是针对哪个表的
FOR INSERT,DELETE,UPDATE
AS
--系统自动在内存中创建deleted表或inserted表,触发器执行完成后,自动删除。
BEGIN
--Insert
IF(EXISTS(SELECT 1 FROM Inserted) AND NOT EXISTS(SELECT 1 FROM Deleted))
BEGIN
--从Inserted表中取得insert的数据更新到log表
INSERT INTO tblGoodsLog SELECT * FROM Inserted
END
--Delete
IF(NOT EXISTS(SELECT 1 FROM Inserted) AND EXISTS(SELECT 1 FROM Deleted))
BEGIN
--从Deleted表中取得delete掉的数据更新到log表
INSERT INTO tblGoodsLog SELECT * FROM Deleted
END
--Update
IF(EXISTS(SELECT 1 FROM Inserted) AND EXISTS(SELECT 1 FROM Deleted))
BEGIN
--由于update相当于将原来的数据删掉之后再插入,所以写log时可以先
--从Deleted表去得删除的数据(更新前的数据)插入到log表,再从Inserted
--表取插入的数据(更新后的数据)插入到log表中
INSERT INTO tblGoodsLog SELECT * FROM Deleted
INSERT INTO tblGoodsLog SELECT * FROM Inserted
END
END
|