日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 數據庫 > SQL Server > 正文

SQL Server:觸發器實例詳解

2024-08-31 01:04:32
字體:
來源:轉載
供稿:網友

1. 概述

sql/8264.html">觸發器是一種特殊的存儲過程,它不能被顯式地調用,而是在往表中插入記錄﹑更新記錄或者刪除記錄時被自動地激活。 所以觸發器可以用來實現對表實施復雜的完整性約束。

2. 觸發器的分類

SQL Server2000提供了兩種觸發器:“Instead of” 和“After” 觸發器。

一個表或視圖的每一個修改動作(Insert、Update和Delete)都可以有一個“Instead of” 觸發器,一個表的每個修改動作都可以有多個“After”觸發器。

2.1 “Instead of”觸發器

  • “Instead of”觸發器在執行真正“插入”之前被執行。除表之外,“Instead of” 觸發器也可以用于視圖,用來擴展視圖可以支持的更新操作。
  • “Instead of”觸發器會替代所要執行的SQL語句,言下之意就是所要執行SQL并不會“真正執行”
alter trigger trigger_學生_Deleteon 學生instead of Deleteasbegin  select 學號, 姓名 from deletedenddelete from 學生 where 學號 = 4 

上例中定義了“trigger學生_Delete”觸發器,該觸發器從“delete”表中打印出所要刪除的學生.在執行“delete”操作后,會發現“學號 = 4”的學生并未被刪除, 原因在于“trigger學生Delete”替代了所要執行的“delete from 學生 where 學號 = 4”語句,而在“trigger學生_Delete”中并未真正刪除學生。

2.2 “After”觸發器

  • “After”觸發器在Insert、Update或Deleted語句執行之后被觸發。“After”觸發器只能用于表。
  • “After”觸發器主要用于表在修改后(insert、update或delete操作之后),來修改其他表

3. Inserted和Deleted表

SQL Server為每個觸發器都創建了兩個專用表:Inserted表和Deleted表。

  • 這兩個表由系統來維護,它們存在于內存中而不是在數據庫中,可以理解為一個虛擬的表。
  • 這兩個表的結構總是與被該觸發器作用的表的結構相同。
  • 觸發器執行完成后,與該觸發器相關的這兩個表也被刪除。
  • Deleted表存放由于執行Delete或Update語句而要從表中刪除的所有行。
  • Inserted表存放由于執行Insert或Update語句而要向表中插入的所有行。

 

對表的操作 Inserted邏輯表 Deleted邏輯表
增加記錄(insert) 存放增加的記錄
刪除記錄(delete) 存放被刪除的記錄
修改記錄(update) 存放更新后的記錄 存放更新前的記錄

 

4. 觸發器的執行過程

  • 如果一個Insert﹑update或者delete語句違反了約束,那么這條SQL語句就沒有執行成功,因此“After”觸發器也不會被激活。
  • “Instead of” 觸發器可以取代激發它的操作來執行。它在Inserted表和Deleted表剛剛建立,其它任何操作還沒有發生時被執行。因為“Instead of” 觸發器在約束之前執行,所以它可以對約束進行一些預處理。

5. 創建觸發器

create trigger trigger_nameon {table_name|view_name}{After|Instead of} {insert|update|delete}as 相應T-SQL語句

6. 修改觸發器:

alter trigger trigger_nameon {table_name|view_name}{After|Instead of} {insert|update|delete}as 相應T-SQL語句

7. 刪除觸發器:

drop trigger trigger_name

8. 查看數據庫中已有觸發器:

8.1 查看數據庫中所有觸發器

select * from sysobjects where xtype='TR'

8.2 查看單個觸發器

exec sp_helptext '觸發器名'

9. “Instead of”相關示例:

兩張表:學生(學號 int, 姓名 varchar)、借書記錄(學號 int, 圖書編號 int)

實現功能:在刪除學生表時,如果該學生仍有借書記錄(未還)則不能刪除

alter trigger trigger_學生_Deleteon 學生instead of Deleteasbegin  if not exists(select * from 借書記錄, deleted where 借書記錄.學號 = deleted.學號)    delete from 學生 where 學生.學號 in (select 學號 from deleted)end

10. “After”觸發器

10.1 在“訂單”表中建立觸發器,當向“訂單”表中插入一條訂單記錄時,檢查“商品”表的貨品狀態“狀態”是否為1(正在整理),則不能往“訂單”表加入該訂單。

create trigger trigger_訂單_inserton 訂單after insertas  if (select 狀態 from 商品, inserted where 商品.pid = inserted.pid)=1  begin    print 'the goods is being processed'    print 'the order cannot be committed'    rollback transaction --回滾,避免加入  end
  • 該示例中“pid”為商品編碼
  • 該示例的if判斷嚴格來講是不準確的,因為“訂單”表如果每次插入一條記錄,該判斷沒有問題;如果一次插入多條記錄,則“select 狀態”返回的是多行。

10.2 在“訂單”表建立一個插入觸發器,在添加一條訂單時,減少“商品”表相應的貨品記錄中的庫存。

create trigger trigger_訂單_insert2on 訂單after insertas  update 商品 set 數量 = 數量 - inserted.數量  from 商品, inserted  where 商品.pid = inserted.pid

10.3 在“商品”表建立刪除觸發器,實現“商品”表和“訂單”表的級聯刪除。

create trigger goodsdelete trigger_商品_deleteon 商品after deleteas  delete from 訂單 where 訂單.pid in (select pid from deleted)

10.4 在“訂單”表建立一個更新觸發器,監視“訂單”表的“訂單日期”列,使其不能被“update”.

create trigger trigger_訂單_updateon 訂單after updateas  if update(訂單日期)  begin    raiserror('訂單日期不能手動修改',10,1)    rollback transaction  end

10.5 在“訂單”表建立一個插入觸發器,保證向“訂單”表插入的貨品必須要在“商品”表中一定存在。

create trigger trigger_訂單_insert3on 訂單after insertas  if (select count(*) from 商品, inserted where 商品.pid = inserted.pid)=0  begin    print '商品不存在'    rollback transaction  end

10.6 “訂單”表建立一個插入觸發器,保證向“訂單”表插入的貨品信息要在“訂單日志”表中添加

alter trigger trigger_訂單_inserton 訂單for insertasinsert into 訂單日志 select inserted.Id, inserted.pid,inserted.數量 from inserted 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
午夜视频在线观看一区| 午夜少妇久久久久久久久| 久久91精品国产91久久小草| 国产欧美久久久| 欧美中文字幕精品| 欧美日韩国产不卡在线看| 欧美日韩人人澡狠狠躁视频| 精品亚洲国内自在自线福利| 日韩欧美亚洲国产一区| 亚洲国产一区自拍| 91精品国产色综合久久不卡蜜臀| 国产黄色精品| 精品在线一区二区三区| 欧美三级日韩三级| 国产字幕中文| 国产999精品在线观看| 国产日韩三级| 欧美日韩国产123区| 精品国产欧美成人夜夜嗨| 日韩 欧美 综合| 久久视频一区| 久久综合久久综合九色| 欧美日韩国产一区在线| av免费在线不卡| 中文字幕亚洲高清| 日韩精品国产欧美| 亚洲一区视频在线观看视频| 91精品国产综合久久久久久| 欧美日韩国产不卡在线看| 精品人妻一区二区免费视频| 亚亚洲欧洲精品| 精品乱人伦一区二区三区| 亚洲视频中文字幕| 国产欧美日韩高清| а√天堂8资源中文在线| 日韩欧美国产视频| 国产h片在线观看| 欧美中文字幕在线视频| 亚洲欧洲日韩精品在线| 精品综合久久久久| 中文字幕亚洲一区在线观看| 午夜私人影院在线观看| 欧美日韩国产一中文字不卡| 99中文字幕一区| 欧美日韩综合在线免费观看| 亚洲社区在线| 日韩三级视频在线播放| 国产日韩av一区| 日韩中文首页| 欧美国产一级片| 亚洲 欧美综合在线网络| 97最新国自产拍视频在线完整在线看| 亚洲欧美999| 亚洲开心激情| 91精品国产调教在线观看| 国产高清在线视频| 视频一区二区不卡| 91久久视频| 日韩在线视频免费观看高清中文| 中文亚洲欧美| 亚洲一区二区三区精品中文字幕| 91精品久久久久| 国产成人精品三级| 精品视频资源站| 亚洲精品欧美二区三区中文字幕| 日韩精品在线播放| 日韩国产在线观看一区| 亚洲免费看av| 日韩免费视频| 亚洲一级在线| 不卡一二三区| 欧美日韩国产在线看| 999精品色在线播放| 91精品网站| 欧美日韩亚洲综合| 中文字幕欧美人妻精品一区蜜臀| 亚洲三级中文字幕| 国产最新在线| 亚洲a中文字幕| 国产在线高清精品| 日本国产一区| 亚洲 欧美 中文字幕| av免费网站在线观看| 国产乱码在线观看| 欧美日韩在线网站| 国产v日产∨综合v精品视频| 欧美日韩中文字幕一区| 中文字幕99| 一区二区三区视频网站| 欧美日韩国产免费观看| 黄色一区二区在线观看| 免费看ww视频网站入口| 在线欧美日韩国产| 本道综合精品| 日韩在线小视频| 欧美国产小视频| 91精品综合久久| 国产欧美日韩视频在线| 国产欧美第一页| 最新日韩中文字幕| 亚洲免费精品| 国产视频不卡| 日韩欧美色综合| 午夜国产视频| 人成免费在线视频| 免费国产成人看片在线| 欧美日韩国产一级片| 日韩 国产 一区| 欧美日韩夫妻久久| 亚洲视频资源在线| 欧美日韩国产综合视频在线观看| 国产婷婷色一区二区三区| 日韩久久精品网| 999精品网| 97caopor国产在线视频| 国产黄在线观看| 中文字幕在线看精品乱码| 欧美在线视频一区二区| 国产成人综合精品| 国产日韩在线视频| 午夜国产在线| 久久久91精品国产| 中文字幕日韩视频| 精品视频在线视频| 欧美久久久精品| 久久91精品国产91久久小草| 精品对白一区国产伦| 日韩精品在线第一页| 精品九九久久| 欧美日韩在线视频免费观看| 欧美日韩精品是欧美日韩精品| 欧美 中文字幕| 久久精品免费看| 欧美一级手机免费观看片| 91精品国产99| 中文字幕狠狠干| 91精品综合久久| 日韩精品视频在线播放| 视频一区二区国产| 日韩精品首页| 欧美日韩精品在线视频| 国产婷婷在线观看| 色综合天天综合网天天狠天天| 国产黄色高清在线| 亚洲欧美中文在线视频| 亚洲综合视频一区| 亚洲一区导航| 亚洲制服丝袜一区| 男人的天堂网av| 国产美女主播视频一区| 99精品一级欧美片免费播放| 国自产拍在线网站网址视频| 欧美激情一区二区三区在线| 国产午夜在线观看| 色综合天天性综合| 精品一二三四| 欧美日韩国产123区| 在线观看免费国产小视频| 在线视频三区| 国产在线拍偷自揄拍精品| 日韩欧美中文在线| 在线一区免费| 亚洲高清视频在线| 亚洲成av人片一区二区密柚| 精品福利一区二区三区| 欧美日韩三级在线| 久久中文精品| 午夜一区二区三区免费| 欧美日韩国产一中文字不卡| 日本亚洲欧美天堂免费| 亚洲综合在线小说| 成人精品视频一区| 91www成人久久| 欧美日韩国产页| 精品视频在线导航| 亚洲一级网站| 国产一二三四| 日韩欧美在线中字| 国产在线观看色| 国产蜜臀在线| 久久91精品视频| 日韩在线欧美| 精品日韩在线观看| 一区在线播放视频| 日韩中文字幕二区| 二区视频在线观看| 中文字幕欧美人妻精品一区蜜臀| 国产成人中文字幕| 欧美日韩国产大片| 91精品网站| 蜜桃视频中文字幕| 在线国产一级| 在线欧美日韩精品| 久久精品久久久久| a√免费观看在线网址www| 欧美日韩在线精品成人综合网| 日韩在线不卡一区| 一本一道久久a久久精品综合蜜臀| 亚洲免费看av| 一区在线播放视频| 国产欧美日韩中文字幕| 亚洲免费观看视频| 精品久久在线观看| 日韩欧美国产黄色| 欧美日韩国产高清一区| 日韩欧美国产黄色| 亚洲一区二区三区精品中文字幕| 久久精品黄色片| 国产黄色在线看| 国产欧美日韩不卡免费| 日韩三级视频在线| 亚洲福利视频专区| 樱花草www在线| 国产一区久久| 精品综合久久久久| 欧美日韩亚州综合| 亚洲乱码在线观看| 国产综合成人久久大片91| 日韩精品免费观看视频| 日韩手机在线观看视频| 亚洲三级欧美| 中文字幕成人乱码在线电影| 中文字幕日韩亚洲| 日韩网站中文字幕| 国产v日产∨综合v精品视频| 日韩精品不卡一区二区| 亚洲中文字幕一区| 欧美日韩激情一区| 亚洲大片精品永久免费| 视频一区中文字幕国产| xxxxx性| 91精品xxx在线观看| 国产免费久久久| 国产亚洲污的网站| 亚洲欧洲日韩在线| 久久91精品久久久久久秒播| 三级精品视频| 欧美日韩一二三四| 国产一卡2卡3卡免费网站| 欧美日韩综合在线观看| 国产小视频在线观看免费| 日韩精品欧美在线| 久久99精品久久久| 一区视频在线播放| 欧美日韩视频在线| 亚洲精品中文字幕乱码三区不卡| 91精品国产高清| 久久久久久久久综合| 欧美日韩精品三区| 国产一级在线播放| 本道综合精品| 亚洲成av人片在线| 日本不卡免费高清视频| 国产小视频免费在线网址| 中文字幕乱码在线| 久久在线91| 在线不卡日本| 最近中文字幕第一页| 日韩三级视频中文字幕| 91精品婷婷国产综合久久| 91精品网站| 久久视频www| 日韩三级高清在线| 国产区日韩欧美| 搞黄在线观看| 精品一二线国产| 精品人妻二区中文字幕| 欧美久久久网站| 中文字幕在线观看国产| 黄色欧美日韩| 91av久久久| 色综合久久六月婷婷中文字幕| 日韩精品视频在线观看视频| 精品三区视频| 久久婷婷中文字幕| 一区精品在线播放| 精品欧美不卡一区二区在线观看| 欧美性极品xxxx做受| 国产在线导航| 亚洲福利在线看| 亚洲一级网站| av中文在线资源| 中文字幕在线观看欧美| 亚洲最新免费视频| 亚洲经典中文字幕| 国产高清视频一区二区| 中文字幕乱码在线| 99精品999| 一区二区在线观| 在线综合 亚洲 欧美中文字幕| 精品国产网站在线观看| 精品国产99久久久久久| 中文字幕 亚洲视频| 欧美日韩国产一区在线| 精品乱人伦一区二区三区| 成人一区而且| 国产黄在线播放| wwwav91com| 欧美日韩在线观看首页| 99亚洲视频| 一级特黄大欧美久久久| 亚洲综合在线视频| 日韩精品福利视频| 国产在成人精品线拍偷自揄拍| 日韩精品手机在线观看| 国产视频不卡| 91精品无人成人www| 国产在线黄色| 亚洲羞羞网站| 精品国产乱码久久久久久牛牛| 日韩三级视频在线看| 久久精品一级爱片| 欧美 中文字幕| 在线亚洲免费| 欧美日韩精品免费| 久久精品www| 欧美三级网址| 欧美三级在线播放| 黄色精品在线观看| 国产免费久久| 国产绿帽一区二区三区| 亚洲综合在线不卡| 欧美日韩中文在线| 在线视频第一页| 免费一级欧美在线观看视频| 日韩欧美国产网站| 国产在线高清精品| 视频一区二区国产| 狠狠色噜噜狠狠狠狠97| 国产三级在线| 欧美日韩精品高清| 国产95在线|亚洲| 亚洲欧美999| av免费网站在线| 亚洲精品欧美二区三区中文字幕| 欧美日韩在线精品一区二区三区激情综| 欧美二三四区| 成年人看的羞羞网站| 日本精品专区| 欧美日韩中文字幕在线观看| 国产欧美日韩久久| av中文在线资源| 国产 欧美 日韩 在线| 亚洲第一中文字幕| 尤物在线精品| 国产99在线|亚洲| 精品日韩欧美| 欧美中文字幕在线观看视频| 日韩精品在线视频观看| 天堂在线中文| 日韩国产成人| 日韩亚洲欧美中文字幕| 日韩在线视频网| 一区二区高清在线| 日韩欧美一级二级三级久久久| 在线国产一级| 日韩午夜高潮| 国内精品99| 亚洲黄色在线观看| 中文字幕亚洲一区在线观看| 国产乱国产乱300精品| 中文字幕欧美国内| 亚洲欧洲综合另类| 亚洲永久免费视频| 婷婷中文字幕综合| 91久久精品国产| 日韩三级一区二区| 欧美色视频一区二区三区在线观看| 欧美一级在线免费| 欧美在线中文字幕| 精品国内自产拍在线视频| 正在播放日韩精品| 日韩欧中文字幕| 欧美日韩视频免费| 国产一级片在线| 蜜臀91精品国产高清在线观看| 欧美日韩国产亚洲一区| 欧美黄页在线免费观看| 午夜av一区二区| 亚洲高清精品视频| 国产一区成人| 91精品国产综合久久福利| 视频在线一区二区| 91精品在线观看国产| 国产欧美综合在线观看第十页| 欧美一级在线观看| 在线视频观看日韩| 中文网丁香综合网| 中文精品在线| 欧美三级一区二区三区| 精品国产乱码久久久久久牛牛| 国产日韩精品在线观看| 中文字幕高清在线播放| 亚洲欧美99| 在线观看一区日韩| 免费看黄资源大全高清| 欧美日韩三级一区| 欧洲精品二区| www.久久久精品| 亚洲第一视频网站|