超碰人人人人人,亚洲AV午夜福利精品一区二区,亚洲欧美综合区丁香五月1区,日韩欧美亚洲系列

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

SQL Server2000 觸發(fā)器

admin
2011年3月14日 15:9 本文熱度 3929
觸發(fā)器是一種特殊的存儲過程,在用戶試圖對指定的表執(zhí)行指定的數(shù)據(jù)修改語句時自動執(zhí)行。創(chuàng)建語法:



 引用內(nèi)容

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

下邊主要說下INSTEAD OF和AFTER兩個參數(shù)的區(qū)別:

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

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

示例



 程序代碼

/*
    download表增加一條記錄時更新天預(yù)統(tǒng)計表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

遞歸觸發(fā)器

當在 sp_dboption 中啟用 recursive triggers 設(shè)置時,SQL Server 還允許觸發(fā)器的遞歸調(diào)用。遞歸觸發(fā)器允許發(fā)生兩種類型的遞歸:

·間接遞歸
·直接遞歸

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

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

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

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

嵌套觸發(fā)器

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

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