欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2012年01月20日 20:19:22   作者:  
平常時寫觸發(fā)器(TRIGGER),一般會分別寫插入(INSERT),刪除(DELETE)和更新(UPDATE)單獨的觸發(fā)器
但是有時候,可以視看處進邏輯程度,可以把三者寫成一個觸發(fā)器,只是在其中稍作判斷而已。

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

復(fù)制代碼 代碼如下:

--宣告兩個變量
DECLARE @D BIT = 0
DECLARE @I BIT = 0

--如果在DELETED內(nèi)部臨時觸發(fā)表找到記錄,說明舊數(shù)據(jù)被刪除
IF EXISTS(SELECT TOP 1 1 FROM DELETED)
SET @D = 1

--如果在INSERTED內(nèi)部臨時觸發(fā)表找到記錄,說明有新數(shù)據(jù)插入
IF EXISTS(SELECT TOP 1 1 FROM INSERTED)
SET @I = 1

--如果兩個表都有記錄,說明觸發(fā)器是執(zhí)行更新觸發(fā)
IF @I = 1 AND @D = 1
PRINT(N'更新。')

--如果變量@I值被變更為1,而變量@D沒有變更,說明觸發(fā)器是執(zhí)行插入觸發(fā)
IF @I = 1 AND @D = 0
PRINT(N'插入')

--下面判斷成立,說明說明觸發(fā)器是執(zhí)行刪除觸發(fā)
IF @I = 0 AND @D = 1
PRINT(N'刪除')


另外有關(guān)兩個內(nèi)部臨時觸發(fā)表,觸發(fā)器的Inserted表和Deleted表

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

相關(guān)文章

最新評論