程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 判斷觸發器正在處理的是插入,刪除還是更新觸發

判斷觸發器正在處理的是插入,刪除還是更新觸發

編輯:更多數據庫知識

但是有時候,可以視看處進邏輯程度,可以把三者寫成一個觸發器,只是在其中稍作判斷而已。

你可以根據從下面方法判斷觸發器是是處理了插入,刪除還是更新觸發的:

復制代碼 代碼如下:
--宣告兩個變量
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'刪除')


另外有關兩個內部臨時觸發表,觸發器的Inserted表和Deleted表

觸發器有兩個虛擬表,Inserted表和Deleted表,這兩個表在不同操作情況之下,表中的數據狀態可不一樣。
一、插入操作(INSERT)時:Inserted表有數據,Deleted表無數據。
二、更新操作(UPDATE)時:Inserted表有數據(新數據),Deleted表有數據(舊數據)。
三、刪除操作(DELETE)時:Inserted表無數據,Deleted表有數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved