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 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章