SQL Server 使用触发器写log(格式参考)

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 

猜你喜欢

转载自blog.csdn.net/qq_24470501/article/details/85788554