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

SQL server 三種常用的觸發(fā)器

 更新時(shí)間:2025年03月01日 10:44:53   作者:漫天轉(zhuǎn)悠  
文章介紹了SQL Server中三種常用的觸發(fā)器:插入觸發(fā)器、刪除觸發(fā)器和更新觸發(fā)器,每種觸發(fā)器在特定操作(插入、刪除、更新)發(fā)生時(shí)觸發(fā),觸發(fā)器可以訪問兩個(gè)虛擬表:Inserted(新數(shù)據(jù))和Deleted(舊數(shù)據(jù)),用于獲取和操作數(shù)據(jù),感興趣的朋友一起看看吧

SQL server 三種常用的觸發(fā)器

1.觸發(fā)器的創(chuàng)建

創(chuàng)建觸發(fā)器時(shí)可以先判斷一下當(dāng)前數(shù)據(jù)庫(kù)里是否已存在相同名字的觸發(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ā)生對(duì)應(yīng)的觸發(fā)器事件時(shí)觸發(fā))
  for update (選擇觸發(fā)器事件)
  as
    if update(recommend) (判斷trigger sqlserver_test表的該字段發(fā)生了改變)
   begin 
  select ‘這是一個(gè)觸發(fā)器的測(cè)試' (執(zhí)行語(yǔ)句基本上是SQL語(yǔ)句都可以寫,但是注意觸發(fā)器有個(gè)執(zhí)行過程如果觸發(fā)器對(duì)應(yīng)事件會(huì)觸發(fā)頻繁建議還是少寫為好,以免造成事件進(jìn)程鎖死??绶?wù)器查詢需要服務(wù)器打開MDSTC服務(wù))
   end
 end
 else
 此處還是不寫為好,總不可能當(dāng)前觸發(fā)器存在你寫個(gè)刪除語(yǔ)句吧。。。

2.insert觸發(fā)器

顧名思義在對(duì)應(yīng)表有數(shù)據(jù)插入時(shí)觸發(fā)

 create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
  on sqlserver_test_list(當(dāng)此表發(fā)生對(duì)應(yīng)的觸發(fā)器事件時(shí)觸發(fā))
  for insert (當(dāng)表有插入時(shí)觸發(fā))
  as
    select recommend from Inserted (取插入行該字段值)
 end

3.delete觸發(fā)器

顧名思義在對(duì)應(yīng)表有行數(shù)刪除時(shí)觸發(fā)

 create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
  on sqlserver_test_list(當(dāng)此表發(fā)生對(duì)應(yīng)的觸發(fā)器事件時(shí)觸發(fā))
  for delete (當(dāng)表有刪除時(shí)觸發(fā))
  as
    select recommend from Deleted (取刪除該字段的值)
 end

4.update觸發(fā)器

顧名思義在對(duì)應(yīng)表有行數(shù)更新時(shí)觸發(fā)

 create trigger sqlserver_test(需創(chuàng)建的觸發(fā)器名)
  on sqlserver_test_list(當(dāng)此表發(fā)生對(duì)應(yīng)的觸發(fā)器事件時(shí)觸發(fā))
  for update (當(dāng)表有更新時(shí)觸發(fā))
  as
    select recommend from Inserted(獲取更新后的數(shù)據(jù))
 end

5.關(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ù)值,較常見為獲取功能字段供其他表進(jìn)行相應(yīng)操作執(zhí)行。

到此這篇關(guān)于SQL server 三種常用的觸發(fā)器的文章就介紹到這了,更多相關(guān)SQL server 觸發(fā)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論