判断触发器正在处理的是插入,删除还是更新触发
生活随笔
收集整理的這篇文章主要介紹了
判断触发器正在处理的是插入,删除还是更新触发
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
平常時寫觸發器(TRIGGER),一般會分別寫插入(INSERT),刪除(DELETE)和更新(UPDATE)單獨的觸發器。
但是有時候,可以視看處進邏輯程度,可以把三者寫成一個觸發器,只是在其中稍作判斷而已。
你可以根據從下面方法判斷觸發器是是處理了插入,刪除還是更新觸發的:
View Code --宣告兩個變量DECLARE?@D?BIT?=?0
DECLARE?@I?BIT?=?0
?
--如果在DELETED內部臨時觸發表找到記錄,說明舊數據被刪除?
IF?EXISTS(SELECT?TOP?1?1?FROM?DELETED)
????SET?@D?=?1
????
--如果在INSERTED內部臨時觸發表找到記錄,說明有新數據插入?????
IF?EXISTS(SELECT?TOP?1?1?FROM?INSERTED)
????SET?@I?=?1?
?
--如果兩個表都有記錄,說明觸發器是執行更新觸發
IF?@I?=?1?AND?@D?=?1?
????PRINT(N'更新。')
--如果變量@I值被變更為1,而變量@D沒有變更,說明觸發器是執行插入觸發????
IF?@I?=?1?AND?@D?=?0
????PRINT(N'插入')
?
--下面判斷成立,說明說明觸發器是執行刪除觸發????
IF?@I?=?0?AND?@D?=?1
????PRINT(N'刪除')
?
另外有關兩個內部臨時觸發表,可參考:http://www.cnblogs.com/insus/articles/1692418.html
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的判断触发器正在处理的是插入,删除还是更新触发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ie8下ewebeditor无效的解决办
- 下一篇: [转]消息队列软件大比拼