狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL Server2000 觸發器

admin
2011年3月14日 15:9 本文熱度 3340
觸發器是一種特殊的存儲過程,在用戶試圖對指定的表執行指定的數據修改語句時自動執行。創建語法:



 引用內容

Create TRIGGER trigger_name ON {table | view}
{INSTEAD OF | AFTER} {[Insert] [,] [Update] [,] [Delete]}
AS
sql_statement

下邊主要說下INSTEAD OF和AFTER兩個參數的區別:

·執行時間:INSTEAD OF在SQL語句執行前觸發,并且SQL語句不會再執行;AFTER則是在SQL語句執行后觸發。
·適用對象:INSTEAD OF適用于表和視圖;AFTER只能用于表。
·數量:Insert、Update和Delete允許有多個AFTER觸發器,但只能有一個INSTEAD OF觸發器。

再來說說觸發器中經常會用到的兩張表:inserted和deleted。這兩張表在結構上類似于定義觸發器的表,其中inserted存放的是Insert的記錄或Update后的新記錄,deleted存放的是Delete的記錄或Update前的舊記錄。例如當觸發器中SQL語句的執行條件是判斷新增記錄某個字段值來進行的,那么就得從inserted獲取新增記錄。

示例



 程序代碼

/*
    download表增加一條記錄時更新天預統計表count1
*/
Create TRIGGER DownCountTR ON download
AFTER Insert
AS
    IF @@rowcount>0
    BEGIN
        DECLARE @date1 datetime
        --從Inserted表中獲取新下載的時間
        Select @date1=convert(nvarchar(10),regtime,120) FROM Inserted
        
        --更新count1表
        IF exists(Select * FROM count1 Where regtime=@date1)
            Update count1 SET downcount=downcount+1 Where regtime=@date1
        ELSE
            Insert INTO count1(downcount,regtime) VALUES(1,@date1)
    END



 程序代碼

/*
    禁止對表的更新和刪除
*/
Create TRIGGER STOP ON dbo.table1
INSTEAD OF Update, Delete
AS
RETURN

遞歸觸發器

當在 sp_dboption 中啟用 recursive triggers 設置時,SQL Server 還允許觸發器的遞歸調用。遞歸觸發器允許發生兩種類型的遞歸:

·間接遞歸
·直接遞歸

使用間接遞歸時,應用程序更新表 T1,從而激發觸發器 TR1,該觸發器更新表 T2。在這種情況下,觸發器 T2 將激發并更新 T1。

使用直接遞歸時,應用程序更新表 T1,從而激發觸發器 TR1,該觸發器更新表 T1。由于表 T1 被更新,觸發器 TR1 再次激發,依此類推。

說明  只有啟用 sp_dboption 的 recursive triggers 設置,才會發生上述行為。對于為給定事件定義的多個觸發器,并沒有確定的執行順序。每個觸發器都應是自包含的。禁用 recursive triggers 設置只能禁止直接遞歸。若要也禁用間接遞歸,請使用 sp_configure 將 nested triggers 服務器選項設置為 0。

如果任一觸發器執行了 ROLLBACK TRANSACTION 語句,則無論嵌套級是多少,都不會進一步執行其它觸發器。

嵌套觸發器

觸發器最多可以嵌套 32 層。如果一個觸發器更改了包含另一個觸發器的表,則第二個觸發器將激活,然后該觸發器可以再調用第三個觸發器,依此類推。如果鏈中任意一個觸發器引發了無限循環,則會超出嵌套級限制,從而導致取消觸發器。若要禁用嵌套觸發器,請用 sp_configure 將 nested triggers 選項設置為 0(關閉)。默認配置允許嵌套觸發器。如果嵌套觸發器是關閉的,則也將禁用遞歸觸發器,與 sp_dboption 的 recursive triggers 設置無關。

該文章在 2011/3/14 15:09:04 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved