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

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

SQL Server 觸發器

2024-08-31 00:55:21
字體:
來源:轉載
供稿:網友
SQL Server 觸發器

一、觸發器定義和創建:

  觸發器(trigger)是個特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由個事件來觸發,比如當對一個表進行操作(insert,delete,update)時就會激活它執行?!?/p>

  觸發器可以在查詢分析器里創建,也可以在表名上點右鍵->“所有任務”->“管理觸發器”來創建,不過都是要寫 T-SQL 語句的,只是在查詢分析器里要先確定當前操作的數據庫。

創建觸發器用CREATE TRIGGER

  基本語法:

    CREATE TRIGGER 觸發器名稱    ON 表名    FOR INSERT、UPDATE 或 DELETE    AS      T-SQL 語句

  下面是聯機叢書上的一個示例,當在 titles 表上更改記錄時,發送郵件通知 MaryM。

  CREATE TRIGGER reminder  ON titles  FOR INSERT, UPDATE, DELETE  AS     EXEC master..xp_sendmail 'MaryM',        'Don''t forget to PRint a report for the distributors.'

二、刪除觸發器

  1.用查詢分析器刪除    在查詢分析器中使用drop trigger 觸發器名稱來刪除觸發器?!   ∫部梢酝瑫r刪除多個觸發器:drop trigger 觸發器名稱,觸發器名稱...    注意:觸發器名稱是不加引號的。在刪除觸發器之前可以先看一下觸發器是否存在:

    if Exists(select name from sysobjects where name=觸發器名稱 and xtype='TR')

  2.用企業管理器刪除    在企業管理器中,在表上點右鍵->“所有任務”->“管理觸發器”,選中所要刪除的觸發器,然后點擊“刪除”。

三、重命名觸發器

  1.用查詢分析器重命名

   exec sp_rename 原名稱, 新名稱

    sp_rename 是 SQL Server™ 自帶的一個存儲過程,用于更改當前數據庫中用戶創建的對象的名稱,如表名、列表、索引名等。

  2.用企業管理器重命名    在表上點右鍵->“所有任務”->“管理觸發器”,選中所要重命名的觸發器,修改觸發器語句中的觸發器名稱,點擊“確定”。

四、INSERT、UPDATE、DELETE 詳解

  1、INSTEAD OF  執行觸發器語句,但不執行觸發器的 SQL 語句,比如試圖刪除一條記錄時,將執行觸發器指定的語句,此時不再執行 delete 語句。例:

  create trigger f    on tbl    instead of delete    as        insert into Logs...

  IF UPDATE(列名)  檢查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:

  create trigger f  on tbl  for update  as      if update(status) or update(title)          sql_statement --更新了 status 或 title 列

  2、inserted、deleted  這是兩個虛擬表,在進行INSERT、UPDATE或DELETE操作的時候自行創建的,inserted 保存的是 insert 或 update 之后所影響的記錄形成的表,deleted 保存的是 delete 或 update 之前所影響的記錄形成的表。例:

復制代碼
  create trigger tbl_delete  on tbl  for delete  as      declare @title varchar(200)      select @title=title from deleted      insert into Logs(logContent) values('刪除了 title 為:' + title + '的記錄')
復制代碼

  說明:如果向 inserted 或 deleted 虛擬表中取字段類型為 text、image 的字段值時,所取得的值將會是null。

五、查看數據庫中所有的觸發器

  1、在查詢分析器中運行:

  use 數據庫名  go  select * from sysobjects where xtype='TR'

  sysobjects保存著數據庫的對象,其中 xtype 為 TR 的記錄即為觸發器對象。在 name 一列,我們可以看到觸發器名稱。

六、sp_helptext查看觸發器內容

  1、用查詢分析器查看

  use 數據庫名  go  exec sp_helptext '觸發器名稱'

  將會以表的樣式顯示觸發器內容?! 〕擞|發器外,sp_helptext 還可以顯示 規則、默認值、未加密的存儲過程、用戶定義函數、視圖的文本

  2、用企業管理器查看

  在表上點右鍵->“所有任務”->“管理觸發器”,選擇所要查看的觸發器存儲過程

七、sp_helptrigger用于查看觸發器的屬性

  sp_helptrigger 有兩個參數:第一個參數為表名;第二個為觸發器類型,為 char(6) 類型,可以是 INSERT、UPDATE、DELETE,如果省略則顯示指定表中所有類型觸發器的屬性。

  例:

  use 數據庫名  go  exec sp_helptrigger tbl

八、遞歸、嵌套觸發器

  遞歸分兩種,間接遞歸和直接遞歸。我們舉例解釋如下,假如有表1、表2名稱分別為 T1、T2,在 T1、T2 上分別有觸發器 G1、G2。

  • 間接遞歸:對 T1 操作從而觸發 G1,G1 對 T2 操作從而觸發 G2,G2 對 T1 操作從而再次觸發 G1...
  • 直接遞歸:對 T1 操作從而觸發 G1,G1 對 T1 操作從而再次觸發 G1...

  嵌套觸發器

    類似于間接遞歸,間接遞歸必然要形成一個環,而嵌套觸發器不一定要形成一個環,它可以 T1->T2->T3...這樣一直觸發下去,最多允許嵌套 32 層。

  設置直接遞歸

    默認情況下是禁止直接遞歸的,要設置為允許有兩種方法:

  • 1、T-SQL語句:
    exec sp_dboption 'dbName', 'recursive triggers', true
  • 2、用企業管理器:數據庫上點右鍵->屬性->選項。

設置間接遞歸、嵌套

  默認情況下是允許間接遞歸、嵌套的,要設置為禁止有兩種方法:

  • 1、T-SQL語句:
    exec sp_configure 'nested triggers', 0 --第二個參數為 1 則為允許
  • 2、用企業管理器:注冊上點右鍵->屬性->服務器設置。
九、觸發器回滾

  我們看到許多注冊系統在注冊后都不能更改用戶名,但這多半是由應用程序決定的, 如果直接打開數據庫表進行更改,同樣可以更改其用戶名,在觸發器中利用回滾就可以巧妙地實現無法更改用戶名。

復制代碼
  use 數據庫名  go  create trigger tr  on 表名  for update  as      if update(userName)         rollback tran
復制代碼

  關鍵在最后兩句,其解釋為:如果更新了 userName 列,就回滾事務。

十、禁用、啟用觸發器

  1、禁用觸發器:

    alter table 表名 disable trigger 觸發器名稱

  2、啟用觸發器:

    alter table 表名 enable trigger 觸發器名稱

  如果有多個觸發器,則各個觸發器名稱之間用英文逗號隔開。

  如果把“觸發器名稱”換成“ALL”,則表示禁用或啟用該表的全部觸發器。

十一、如何判斷觸發器被哪種狀態觸發

  

復制代碼
        if   not   exists(select   *   from   deleted)                        /*Insert*/              if   not   exists(select   *   from   Inserted)                        /*Delete*/              if   exists(select   *   from   Inserted)   and   exists(select   *   from   Deleted)                      /*Update*/   
復制代碼
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青草原成人在线视频| 欧美视频不卡中文| 精品视频一区在线视频| 久久影院资源站| 91国内精品久久| 亚洲bt天天射| 国产精品成久久久久三级| 欧美高清视频在线播放| 乱亲女秽乱长久久久| 久久国产精品久久久| 亚洲自拍小视频免费观看| 亚洲伊人久久综合| 国产精品久久久亚洲| 国产69精品久久久久9999| 欧美人交a欧美精品| 一本色道久久综合亚洲精品小说| 日韩av电影中文字幕| 欧美日韩亚洲精品一区二区三区| 久久国产精品亚洲| 9.1国产丝袜在线观看| 国产精品老女人视频| 成人激情视频小说免费下载| 欧美激情一区二区三区在线视频观看| 国产一区二区三区欧美| 久久综合88中文色鬼| 亚洲a一级视频| 91sao在线观看国产| 欧美日韩国产一中文字不卡| 亚洲欧洲国产伦综合| 成人精品视频99在线观看免费| 日韩欧美亚洲一二三区| 国产成人一区二区在线| 久久久免费精品视频| 久久综合亚洲社区| 最近中文字幕2019免费| 国产一区二区三区在线观看网站| 成人精品一区二区三区电影免费| 精品国产31久久久久久| 国内久久久精品| 国产亚洲欧美视频| 亚洲第一网站免费视频| 在线观看精品国产视频| 91免费欧美精品| 色偷偷亚洲男人天堂| 欧美亚洲成人免费| 久久成人av网站| 7777精品视频| 欧美日韩福利视频| 97国产精品视频人人做人人爱| 日韩中文理论片| 亚洲第一天堂无码专区| 91影视免费在线观看| 国产一区二区三区在线免费观看| 91久久精品日日躁夜夜躁国产| 久久99青青精品免费观看| 欧美性感美女h网站在线观看免费| 国产精品99久久久久久久久| 亚洲精品一区二区三区不| 91精品在线影院| 久热在线中文字幕色999舞| 精品国偷自产在线| 午夜免费久久久久| 一区二区成人精品| 中文字幕亚洲二区| 国产91精品久久久久| 亚洲欧美日韩天堂一区二区| 欧美精品成人91久久久久久久| 欧美日韩另类视频| 欧美性jizz18性欧美| 日韩免费av在线| 欧美电影免费观看高清完整| 成人h片在线播放免费网站| 色999日韩欧美国产| 大荫蒂欧美视频另类xxxx| 亚洲精品中文字幕av| 精品激情国产视频| 538国产精品一区二区免费视频| 欧美精品videofree1080p| 国产精品xxxxx| 91伊人影院在线播放| 欧美性猛交xxxx黑人猛交| 最近2019免费中文字幕视频三| 奇米成人av国产一区二区三区| 在线观看欧美日韩| 久久久亚洲欧洲日产国码aⅴ| 国产在线精品成人一区二区三区| 日本精品免费一区二区三区| 国产亚洲欧美日韩一区二区| 国产三级精品网站| 日本不卡高字幕在线2019| 欧美激情综合亚洲一二区| 精品视频在线播放色网色视频| 日韩av网站导航| 亚洲天堂av电影| 91av国产在线| 国产日韩在线精品av| 国产亚洲精品高潮| 理论片在线不卡免费观看| 在线视频日本亚洲性| 91啪国产在线| 精品美女久久久久久免费| 丝袜情趣国产精品| 亚洲风情亚aⅴ在线发布| 97超碰国产精品女人人人爽| 亚洲一区亚洲二区亚洲三区| 国产亚洲精品高潮| 久久久久久中文字幕| 日韩中文视频免费在线观看| 中文在线不卡视频| 91久久精品国产| 国产精品igao视频| 欧美日韩第一页| 亚洲综合在线播放| 国产日产欧美a一级在线| 中文字幕av一区中文字幕天堂| 国产成人欧美在线观看| 国产精品羞羞答答| 日韩在线观看免费网站| 精品性高朝久久久久久久| 日韩在线视频线视频免费网站| 亚洲成人网在线观看| 亚洲第一区在线观看| 日韩欧美中文字幕在线播放| 欧美一级黄色网| 久久精品99国产精品酒店日本| 日韩国产高清污视频在线观看| 日韩av在线资源| 欧美亚洲一区在线| 久久九九精品99国产精品| 欧美激情视频在线免费观看 欧美视频免费一| 日韩亚洲一区二区| 欧美裸体视频网站| 日韩中文字幕精品视频| 国产精品日韩精品| 日韩av在线播放资源| 一个色综合导航| 欧美成人一区二区三区电影| 亚洲综合在线中文字幕| 亚洲专区在线视频| 欧美在线精品免播放器视频| 福利视频第一区| 777777777亚洲妇女| www.精品av.com| 国产成人一区二区三区电影| 色狠狠久久aa北条麻妃| 精品久久久久久久中文字幕| 2024亚洲男人天堂| 中文字幕亚洲无线码a| 国产成人在线亚洲欧美| 欧美性受xxxx黑人猛交| 九九精品视频在线| 中文字幕9999| 国产精品对白刺激| 亚洲视频在线免费观看| 国产午夜精品麻豆| 国产欧美精品一区二区| 亚洲毛片在线观看| 91成人精品网站| 欧美在线视频观看| 午夜精品一区二区三区视频免费看| 久久精品电影网站| 精品久久久久久电影| 欧美最猛性xxxxx亚洲精品| 中文字幕成人精品久久不卡|