SQL server 三種常用的觸發(fā)器
SQL server 三種常用的觸發(fā)器
1.觸發(fā)器的創(chuàng)建
創(chuàng)建觸發(fā)器時可以先判斷一下當(dāng)前數(shù)據(jù)庫里是否已存在相同名字的觸發(fā)器
sql server的觸發(fā)器名保存在sysobjects這張表里所以要知道是否存在只需創(chuàng)建前查詢下該表即可
if not exists(select 1 from sysobjects where name='sqlserver_test(需創(chuàng)建的觸發(fā)器名稱)'
and type='tr')(如果當(dāng)前觸發(fā)器不存在)
begin (則創(chuàng)建觸發(fā)器)
create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
on sqlserver_test_list(當(dāng)此表發(fā)生對應(yīng)的觸發(fā)器事件時觸發(fā))
for update (選擇觸發(fā)器事件)
as
if update(recommend) (判斷trigger sqlserver_test表的該字段發(fā)生了改變)
begin
select ‘這是一個觸發(fā)器的測試' (執(zhí)行語句基本上是SQL語句都可以寫,但是注意觸發(fā)器有個執(zhí)行過程如果觸發(fā)器對應(yīng)事件會觸發(fā)頻繁建議還是少寫為好,以免造成事件進程鎖死??绶?wù)器查詢需要服務(wù)器打開MDSTC服務(wù))
end
end
else
此處還是不寫為好,總不可能當(dāng)前觸發(fā)器存在你寫個刪除語句吧。。。2.insert觸發(fā)器
顧名思義在對應(yīng)表有數(shù)據(jù)插入時觸發(fā)
create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
on sqlserver_test_list(當(dāng)此表發(fā)生對應(yīng)的觸發(fā)器事件時觸發(fā))
for insert (當(dāng)表有插入時觸發(fā))
as
select recommend from Inserted (取插入行該字段值)
end3.delete觸發(fā)器
顧名思義在對應(yīng)表有行數(shù)刪除時觸發(fā)
create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
on sqlserver_test_list(當(dāng)此表發(fā)生對應(yīng)的觸發(fā)器事件時觸發(fā))
for delete (當(dāng)表有刪除時觸發(fā))
as
select recommend from Deleted (取刪除該字段的值)
end4.update觸發(fā)器
顧名思義在對應(yīng)表有行數(shù)更新時觸發(fā)
create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
on sqlserver_test_list(當(dāng)此表發(fā)生對應(yīng)的觸發(fā)器事件時觸發(fā))
for update (當(dāng)表有更新時觸發(fā))
as
select recommend from Inserted(獲取更新后的數(shù)據(jù))
end5.關(guān)于取值
1.插入操作(Insert)
Inserted表有數(shù)據(jù),Deleted表無數(shù)據(jù)
提示:
可以用inserted此表獲取需要字段的值去更新其他表數(shù)據(jù)或者插入至其他表中
比較常見的就是作中間表的數(shù)據(jù)轉(zhuǎn)移
2.刪除操作(Delete)
Inserted表無數(shù)據(jù),Deleted表有數(shù)據(jù)
提示:
可以用Deleted此表獲取需要字段的值去更新其他表數(shù)據(jù)或者插入至其他表中,
比較常見的就是做刪除數(shù)據(jù)記錄或備份
3.更新操作(Update)
Inserted表有數(shù)據(jù)(新數(shù)據(jù)),Deleted表有數(shù)據(jù)(舊數(shù)據(jù))
提示:
可以用Deleted此表獲取到修改前表中的數(shù)據(jù)值,比較常見的就是做數(shù)據(jù)修改記錄或備份。用Inserted獲取到修改后的數(shù)據(jù)值,較常見為獲取功能字段供其他表進行相應(yīng)操作執(zhí)行。
到此這篇關(guān)于SQL server 三種常用的觸發(fā)器的文章就介紹到這了,更多相關(guān)SQL server 觸發(fā)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用linux?CentOS本地部署SQL?Server數(shù)據(jù)庫超詳細步驟
作為一名Linux愛好者,我們在使用Linux系統(tǒng)的時候,經(jīng)常需要使用到數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于使用linux?CentOS本地部署SQL?Server數(shù)據(jù)庫的超詳細步驟,需要的朋友可以參考下2024-01-01
sqlserver substring函數(shù)使用方法小結(jié)
在操作sqlserver時候用到了substring函數(shù),特整理一些實例,需要的朋友可以參考下。2009-12-12
SQLSERVER2022創(chuàng)建用戶的圖文教程
用戶是數(shù)據(jù)庫中的實體,用于控制對數(shù)據(jù)庫對象的訪問權(quán)限,本文主要介紹了SQLSERVER2022創(chuàng)建用戶的圖文教程,具有一定的參考價值,感興趣的可以了解一下2024-04-04

