亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL Server:觸發(fā)器實例詳解

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

1. 概述

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

2. 觸發(fā)器的分類

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

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

2.1 “Instead of”觸發(fā)器

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

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

2.2 “After”觸發(fā)器

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

3. Inserted和Deleted表

SQL Server為每個觸發(fā)器都創(chuàng)建了兩個專用表:Inserted表和Deleted表。

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

 

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

 

4. 觸發(fā)器的執(zhí)行過程

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

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

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

6. 修改觸發(fā)器:

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

7. 刪除觸發(fā)器:

drop trigger trigger_name

8. 查看數(shù)據(jù)庫中已有觸發(fā)器:

8.1 查看數(shù)據(jù)庫中所有觸發(fā)器

select * from sysobjects where xtype='TR'

8.2 查看單個觸發(fā)器

exec sp_helptext '觸發(fā)器名'

9. “Instead of”相關示例:

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

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

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”觸發(fā)器

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

create trigger trigger_訂單_inserton 訂單after insertas  if (select 狀態(tài) 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 狀態(tài)”返回的是多行。

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

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

10.3 在“商品”表建立刪除觸發(fā)器,實現(xiàn)“商品”表和“訂單”表的級聯(lián)刪除。

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

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

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

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

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

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

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

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


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
91tv官网精品成人亚洲| 蜜桃av噜噜一区二区三| 成人综合网网址| 可以看毛片的网址| www在线观看播放免费视频日本| jizz免费一区二区三区| 免费黄色福利视频| 99久久久久久| 免费高清在线一区| 领导边摸边吃奶边做爽在线观看| 香蕉久久夜色精品国产| 久久久久久毛片| 性高潮久久久久久久久久| 久久艹国产精品| 国产精品视区| 7799精品视频天天看| 九色精品美女在线| 91九色蝌蚪91por成人| 秋霞一区二区三区| 日韩中文字幕组| hd100%videos日本| 欧美mv日韩mv国产网站app| 日本色护士高潮视频在线观看| www.涩涩涩| 黄色一级片国产| 免费大片在线观看| 四季av日韩精品一区| fc2ppv素人在线| 不卡视频在线| 夫妻av一区二区| 思思99热久久精品在线6| 日韩精品一区二区三区丰满| 2023国产精品| 极度色播免费播放视频| 免费又黄又爽又猛大片午夜| 精品乱人伦小说| 国产精品极品美女粉嫩高清在线| a级片在线播放| av在线天堂网| 久久爱www| 成人av免费电影网站| 夜夜爽夜夜爽精品视频| 麻豆三级在线观看| 亚洲电影免费观看高清| www.xxx亚洲| 国产亚洲一卡2卡3卡4卡新区| 九色蝌蚪在线视频| 激情不卡一区二区三区视频在线| www.女人的天堂.com| 欧美日韩一区二区三区不卡| 全网免费在线播放视频入口| 日韩在线观看视频免费| 国产专区精品视频| 一级做a爰片久久毛片美女图片| 亚洲国产日韩一级| 成人ww免费完整版在线观看| 手机精品视频在线观看| 91精品久久久久久蜜臀| 国产一区二区三区探花| 国产最新自拍视频| 日韩一级片av| 欧美综合一区第一页| 天堂视频在线| 亚洲黄色免费在线观看| 精品国产无码一区二区| 91黑丝在线观看| 福利91精品一区二区三区| 亚洲天堂国产精品| 亚洲大胆人体视频| 印度美女freesex性hd| 天天综合视频在线观看| 国产综合动作在线观看| 欧美三级午夜理伦三级中文幕| 日本视频三区| 免费在线看黄| 国产美女亚洲精品7777| 在线日韩欧美| 国内精品久久久久久野外| 国产一区免费看| gogogo高清免费观看在线视频| 91亚洲一区精品| 久久综合精品视频| 九七午夜视频| 国内一区二区在线| 国产一区二区在线免费播放| 国产传媒视频在线| 国产精品高清无码| www.亚洲男人天堂| 在线看欧美视频| 日本丰满www色| 国内精品小视频| 99re66热这里只有精品3直播| 国产精品日本| 国产精品羞羞答答xxdd| 视频在线你懂的| 久久一二三国产| 91在线短视频| 欧美久久久久久久久久久久久| 日韩在线欧美在线国产在线| 久久蜜臀精品av| 女性隐私黄www网站视频| av黄色免费在线观看| www.九色在线| 亚洲午夜久久久久中文字幕| 91精品国产色综合久久不卡电影| 国产情侣自拍av| 国产激情二区| 美女写真久久影院| xxx免费观看| 91在线高清免费观看| 免费精品国产| 成人福利视频网| 青青草免费观看完整版高清| 国产欧美日韩中文| 好吊色一区二区三区| 欧洲另类一二三四区| 欧美激情黑人| 精品黄色免费中文电影在线播放| 一区二区三区日韩精品| 欧美日夜夜逼| 涩涩屋成人免费视频软件| 午夜一区二区三区免费| 国产精品亚洲欧美在线播放| 久久综合九色综合欧美98| 亚洲wwwwww| 日韩一区二区麻豆国产| 麻豆91在线观看| 欧美大片一区二区三区| 欧美日韩视频精品二区| 人妻熟女aⅴ一区二区三区汇编| 亚洲www啪成人一区二区麻豆| 国产小视频91| 亚洲一区精彩视频| 中文一区二区完整视频在线观看| 黄网在线免费| caoporm在线视频| 欧美在线观看一二区| 2019国产精品自在线拍国产不卡| 五月天婷婷激情网| 特黄特色免费视频| 国内精品国语自产拍在线观看| a级大片免费看| 成人性片免费| 国语对白做受69按摩| 一区二区中文字幕| 一二三在线视频| 伊人成年综合网| 久久精品久久精品久久| www.91在线观看| av网站免费播放| 亚洲怡红院在线观看| free性欧美1819hd| 另类春色校园亚洲| 中文字幕国产一区二区| 日韩成人亚洲| 中文字幕一区二区人妻痴汉电车| 美日韩一级片在线观看| 日韩一区亚洲二区| 视频一区二区在线观看| 国产精品久久久久99| 99热免费在线| 日韩欧美一区在线观看| av白虎一区| 在线观看免费成人| 99热这里只有精品免费| 欧美三级电影精品| 中文文字幕文字幕高清| 国产一级二级在线观看| 成r视频免费观看在线播放| www.91popny.com| 8x8x华人在线| 亚洲精品视频观看| 国产在视频线精品视频| 欧美日韩国产精品一区二区亚洲| 欧美视频专区一二在线观看| 午夜国产精品视频免费体验区| 麻豆国产欧美日韩综合精品二区| 夜夜精品视频| 国产精品对白交换视频| 久久精品欧美一区二区三区不卡| 国产在线播放av| 一个色综合导航| se视频在线观看| 性欧美大战久久久久久久| 亚洲欧洲综合另类| 欧美极品xxx| 国产精品美女av| 精品伦精品一区二区三区视频密桃| 影音先锋2020色资源网| 99综合在线| 午夜影院久久久| 亚洲精品白浆高清| 亚洲一区二区三区乱码aⅴ| a亚洲天堂av| 欧美激情三级免费| 亚洲男女在线观看| 欧美r级电影| 欧美一区日韩一区| 欧美色图另类图片| 日本 片 成人 在线| 亚洲电影在线观看| 一区二区三区在线| 性欧美精品一区二区三区在线播放| 亚洲一二三级电影| 成人影视免费观看| 欧美影院在线播放| 99re资源| 蜜臀精品一区二区三区在线观看| 在线观看av网站| 国产美女精品视频国产| av中文资源在线资源免费观看| 久久无码精品丰满人妻| 成人av网址在线观看| 捆绑变态av一区二区三区| 中文字幕欧美精品在线| 成人无遮挡免费网站视频在线观看| 波多野结衣av一区二区全免费观看| 在线播放一区二区精品产| 欧美老女人性开放| 欧美日韩日本国产| japansex久久高清精品| 成人日韩av在线| 日本三级视频在线播放| 在线中文字幕av| 2021久久精品国产99国产精品| 国产私拍福利精品视频二区| 日韩综合另类| 咪咪网在线视频| 亚洲午夜精品久久久久久app| 精品电影一区| 天天操夜夜干| 美女被羞羞网站| 五月综合激情日本mⅴ| 日本韩国欧美一区| 青青草国产免费一区二区下载| 亚洲精品一区二区三区精华液| 国精产品一区二区| 欧美高清性xxxxxxx| 精品久久精品| 久久久久久久久久久av| 国产吃瓜黑料一区二区| 中文字幕一区二区三区免费看| 久久久久久国产精品无码| aaa亚洲精品| 国产成人三级视频| 二个人看的毛片| www.av在线.com| 国产精品久久久久aaaa| 精品999日本久久久影院| 久久国产精品久久精品国产| 国产精品久久精品牛牛影视| 亚洲精品亚洲人成人网| 久视频在线观看| 国产成人精品一区二区三区在线观看| 免费吸乳羞羞网站视频| 久久在线视频免费观看| 农村妇女精品一二区| 久久精品国产亚洲精品| 国产午夜一区二区| 久久久久久久久久久av| 欧美精品v日韩精品v国产精品| 日韩av资源在线| www.日本xxxx| 麻豆久久久久久久久久| 91精品国产免费久久久久久| 亚洲精品国产一区二区三区四区在线| 亚洲福利影片在线| 精品日本高清在线播放| 国产视频精品免费播放| 白丝美女让我捅| 国产精品99爱免费视频| 污污的网站在线看| 国产一级淫片久久久片a级| 香港日本韩国三级网站| 久久精品欧美一区| 美女av一区二区三区| 久久精品99国产精| 日韩三区在线观看| 26uuu日韩精品一区二区| 亚洲奶大毛多的老太婆| 欧美日韩中文字幕一区| 欧美aaa免费| 国产一区二区麻豆| 91精品国自产在线观看| 欧美激情一区二区三区p站| 中文幕一区二区三区久久蜜桃| 国产短剧电视剧免费观看| 亚洲精品女人久久久| 免费在线成人| 国产精品视频播放| 国产在线精品一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 亚洲第一区av| 成人性生交大片免费看中文视频| 久久国产精品精品国产色婷婷| 伦理天堂电影| 亚洲国产精品第一区二区三区| 国产伦精品一区二区三区四区免费| 国产精品扒开腿做爽爽爽软件| 欧美在线国产| 欧美日韩在线免费视频| 天天插天天狠天天透| 欧美一级成年大片在线观看| 性xxxfreexxxx性欧美| 日韩av电影在线播放| 日韩美女一级视频| 久久国产66| 午夜精品免费| 国产成人免费视频网站视频社区| 久久精品在线观看| 欧美极品日韩| 日韩乱码一区二区三区| 日韩写真福利视频在线| 亚洲欧美激情在线观看| 色呦呦一区二区| 国产三级国产精品国产专区50| 精品中文av资源站在线观看| 欧美乱妇40p| 国产成人亚洲精品无码h在线| 手机在线观看你懂的| 中文字幕在线观看精品| 国产福利精品在线| 久久成年人网站| 黄色片网站免费在线观看| 久久亚洲一区二区三区明星换脸| 三级视频中文字幕| 韩国精品一区| 在线观看免费视频综合|