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

首頁 > 開發 > 綜合 > 正文

SQL Sever 2000中的前觸發器和后觸發器

2024-07-21 02:42:56
字體:
來源:轉載
供稿:網友
我們知道,觸發器是一種特殊的存儲過程。當Insert Update或Delete語句修改表中一個或者多個行時就會執行觸發器。因為SQL Server對特定表上的每一個指定操作調用一個觸發器,所以可以使用觸發器擴展SQL Sever 的內置完整性和數據操縱功能。

(不像Delete 語句,Trancate Table 語句不激活觸發器,Write Text 語句也不激活觸發器)。

在SQL Sever 2000中支持兩種類型的觸發器,前觸發器(Instead Of Trigger)和后觸發器(After Trigger)。前觸發器就是在語句執行之前激活觸發器,而后觸發器就是在語句執行之后激活觸發器??梢酝ㄟ^FOR 子句來選擇使用何種觸發器。

當為每一種操作創建一個觸發器時,可以為所有三種操作創建一個觸發器,并且使用相應的編程技術處理每一種操作。下面的示例在For 子句中列出了三種語句類型,并且使用條件語句將相應的跟蹤值插入到CustUpdLog 表中。

Create Trigger TrackCustomerUpdatesOn AppDta.dbo.CustomerFor Insert,Update,DeleteAsDeclare @InsertedCount IntDeclare @DeletedCount IntSet @InsertedCount=(Select Count(*)From inserted)Set @DeletedCount=(Select Count(*)From deleted)If ( @InsertedCount>0)BeginInsert Into AppDta.dbo.CustUpdLog( CustID,Action,UpdUser,UpdDateTime)Select CustId,CaseWhen( @DeletedCount>0)Then'Update'Else 'Insert'End,Current_User,Current_TimeStampFrom insertedEndElse If(@DeletedCount>0)BeginInsert Into AppDta.dbo.CustUpdLog( CustId,Action,UpdUser,UpdDateTime)select CustId,'Delete',Current_User,Current_TimeStampFrom deletedEnd

從以上這個示例我們可以發現,無論何時Insert或者Update語句影響一個或者多行時,inserted 臨時表都有記錄行。無論何時Delete 或者Update 語句影響一個或者多行時,deleted 臨時表都有記錄行。對于一個Update 語句,deleted 臨時表有舊行,inserted 臨時表有新行。這個示例還反映了觸發器的另一個重要方面:對于某個表的Update 或者Delete 操作,即使該語句沒有影響到行,也激活觸發器 (也就是說沒有滿足Where 子句的行)。 觸發器的存儲過程應該預測這種可能性。

不僅可以為一個表創建多個觸發器,而且還可以為一個表的同一個SQL 語句(例如Update 語句)創建多個后觸發器,不能為同一個SQL 語句創建多個前觸發器。每一個新的Create Trigger 語句增加觸發器到那些指定表和語句已有的觸發器中。對于所創建的多個觸發器,可以用系統存儲過程sp_settriggerorder 來指定第一個被激活的觸發器和最后一個被激活的觸發器,而對于其他的觸發器,則不能指定其激活順序,只能由系統決定。這種觸發器的特征不會引起任何特殊的問題。因為總是可以實現各種動作作為正常的存儲過程,并且按照要求的順序從一個觸發器中調用它們。

盡管觸發器是一種存儲過程,但是不能使用Execute 語句調用它,如果有希望共享觸發器和正常的存儲過程的編碼,那么只需把共享代碼放在存儲過程中,從觸發器中調用它。如果一個觸發器修改一個表,那么這些修改可能會激活另一個觸發器,或者本身。在默認情況下,SQL Sever 允許這種嵌套的觸發器調用深度為32層。雖然我們建議允許嵌套的和疊代的觸發器,但是可以使用系統存儲過程禁止這么做。下面的語句在指定的數據庫上防止疊代觸發器:

sp_dboption AppDta,`recursive triggers',`false'

為了在所有數據庫中防止嵌套觸發器調用(包括疊代調用),可以使用下面的語句:

sp_configure `nested triggers',0

前面以后觸發器為例介紹了觸發器的基本內容,下面再介紹一下前觸發器的不同之處。要創建一個前觸發器必須用Instead Of 顯式聲明,如下面的例子:

create Trigger TrackCustomerUpdatesOn AppDta.dbo.CustomerInstead Of UpdateAsInsert Into AppDta.dbo.CustUpdLog(CustId,Action,UpdUser,UpdDateTime)Select CustId,‘Update’,Current_User,Current_TimeStampFrom inserted

與后觸發器不同的是:前觸發器既可以在表又可以在視圖上創建,但一條語句只能創建一個前觸發器,因此,前觸發器不存在激活順序問題

觸發器應用舉例:從當前數據庫服務器的Shop表Insert操作同步到另一臺服務器的Shop。

CREATE TRIGGER Trigger_SynShopForInsert1ON dbo.ShopFOR INSERTAS  insert into OtherServer.dbo.shop(lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex)select  lngShopID,strShopCode,strName,strShopName,strDescription,lngIndexfrom shop where lngShopID in (select lngshopid from inserted)

或者使用下面的語句:

CREATE TRIGGER Trigger_SynShopForInsert2ON dbo.ShopFOR INSERTAS  insert into OtherServer.dbo.shop(lngShopID,strShopCode,strName,strShopName,strDescription,lngIndex)select  lngShopID,strShopCode,strName,strShopName,strDescription,lngIndexfrom  inserted

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97精品欧美一区二区三区| 精品国产成人在线| 日韩极品精品视频免费观看| 国内精品久久久久| 欧美一级视频免费在线观看| 久久精品国产久精国产思思| 9.1国产丝袜在线观看| 日韩美女视频在线观看| 国产aⅴ夜夜欢一区二区三区| 日韩乱码在线视频| 国产在线一区二区三区| 九九热精品视频在线播放| 海角国产乱辈乱精品视频| 在线播放日韩精品| 国内精品美女av在线播放| 8090理伦午夜在线电影| 精品久久久久久久久久久久| 日本精品久久久| 欧美激情在线狂野欧美精品| 一区二区三区在线播放欧美| 亚洲理论电影网| 日韩av不卡电影| 国内精品小视频在线观看| 夜夜嗨av一区二区三区免费区| 一区二区三区亚洲| 欧美精品videofree1080p| 久久久久久久久久久久久久久久久久av| 日韩久久免费电影| 国产精品海角社区在线观看| 欧美精品情趣视频| 最近2019年中文视频免费在线观看| 亚洲美女激情视频| 欧美日韩人人澡狠狠躁视频| 欧美日韩国产综合视频在线观看中文| 欧美成人一区二区三区电影| 国产成人久久久| 日韩电影中文 亚洲精品乱码| 久久精品中文字幕一区| 亚洲第一网站男人都懂| 亚洲视频在线播放| 欧美成人性色生活仑片| 久久五月天综合| 午夜精品久久久99热福利| 久久人体大胆视频| 亚洲自拍偷拍视频| 国产亚洲综合久久| 97**国产露脸精品国产| 欧美一级黄色网| 欧美精品生活片| 日韩久久精品成人| 精品欧美激情精品一区| 九九热精品视频在线播放| 国产精品爽爽爽爽爽爽在线观看| 欧美日韩免费区域视频在线观看| 91精品在线播放| 亚洲视频欧洲视频| 欧美性videos高清精品| 久久久国产视频| 欧美日本精品在线| 亚洲成人激情小说| 国产精品精品视频一区二区三区| 2019中文在线观看| 亚洲аv电影天堂网| 欧美性猛交xxxx富婆弯腰| 国产91精品久| 热久久这里只有精品| 日韩免费高清在线观看| 久久久国产精品亚洲一区| 欧美一区亚洲一区| www.美女亚洲精品| 亚洲精品美女网站| 亚洲国产天堂久久综合| 欧美性jizz18性欧美| 亚洲国产精品女人久久久| 国产精品高精视频免费| 国产精品专区h在线观看| 日韩美女福利视频| 亚洲男人天堂九九视频| 国内精品免费午夜毛片| 国产精品亚洲网站| 91精品国产91久久久久久| 夜色77av精品影院| 91欧美精品成人综合在线观看| 亚洲aⅴ日韩av电影在线观看| 国产盗摄xxxx视频xxx69| 精品国产乱码久久久久久婷婷| 在线日韩精品视频| 精品国产电影一区| 青草成人免费视频| 麻豆精品精华液| 欧美性猛交xxxx黑人猛交| 久久777国产线看观看精品| 国产精品欧美亚洲777777| 亚洲女人初尝黑人巨大| 精品激情国产视频| 一本一本久久a久久精品牛牛影视| 91av视频在线免费观看| 91欧美激情另类亚洲| 亚洲黄色av女优在线观看| 国产一区二区三区在线观看网站| 日本91av在线播放| 亚洲精品ady| 91精品久久久久久久久不口人| 中文字幕在线看视频国产欧美| 亚洲乱码av中文一区二区| 1769国产精品| 日韩男女性生活视频| 国产成人亚洲综合91| 午夜美女久久久久爽久久| 精品在线小视频| 欧美一级电影免费在线观看| 亚洲视频一区二区三区| 欧美激情精品久久久久久黑人| 欧美又大又粗又长| 亚洲欧美日韩中文在线制服| 成人有码视频在线播放| 日韩精品一区二区三区第95| 国产成人精品电影久久久| 日韩av在线精品| 日韩电影在线观看永久视频免费网站| 国产成人一区三区| 国产精品第100页| 欧美理论电影在线播放| 中文字幕在线日韩| 亚洲国产精品一区二区久| 国产日产久久高清欧美一区| 91视频国产高清| 欧美激情精品久久久| 国产精品久久久久久久久久三级| 欧美日韩一区二区精品| 国产成人欧美在线观看| 亚洲激情电影中文字幕| 国内偷自视频区视频综合| 成人免费xxxxx在线观看| 国产色综合天天综合网| 97国产成人精品视频| 欧美久久久精品| 国产婷婷97碰碰久久人人蜜臀| 欧美黄色免费网站| 在线观看日韩av| 日韩av免费网站| 日韩成人久久久| 亚洲美女中文字幕| 精品中文字幕视频| 欧美精品激情在线| 日韩av免费在线看| 搡老女人一区二区三区视频tv| 日韩av影院在线观看| 亚洲第一天堂av| 91久久国产精品| 国产精品免费一区豆花| 久久影视电视剧免费网站清宫辞电视| 色综合视频网站| 美女性感视频久久久| 久久久国产精品一区| 欧美在线观看网站| 亚洲精品之草原avav久久| 国产精品影院在线观看| 亚洲xxx大片| 91精品久久久久久| 最近更新的2019中文字幕| 日本aⅴ大伊香蕉精品视频| 亚洲理论在线a中文字幕| 国产91精品视频在线观看|