




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、初學(xué)sql server 2008之觸發(fā)器觸發(fā)器(trigger):是一種特殊的存儲(chǔ)過(guò)程,可以用來(lái)對(duì)表實(shí)施復(fù)雜的完整性約束,保持?jǐn)?shù)據(jù)的一致性。當(dāng)觸發(fā)器所保護(hù)的數(shù)據(jù)發(fā)生改變時(shí),觸發(fā)器會(huì)自動(dòng)被激活,并執(zhí)行觸發(fā)器中所定義的相關(guān)操作,從而保證對(duì)數(shù)據(jù)的不完整性約束或不正確的修改。在SQL SERVER 2008中,有三種類(lèi)型的觸發(fā)器:(1)DML觸發(fā)器:是指觸發(fā)器在數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)操作語(yǔ)言(DML)事件時(shí)將啟用。DML事件即指在表或視圖中修改數(shù)據(jù)的insert、update、delete語(yǔ)句也。(2)DDL觸發(fā)器:是指當(dāng)服務(wù)器或數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)定義語(yǔ)言(DDL)事件時(shí)將啟用。DDL事件即指在表或索引中的
2、create、alter、drop語(yǔ)句也。(3)登陸觸發(fā)器:是指當(dāng)用戶(hù)登錄SQL SERVER實(shí)例建立會(huì)話(huà)時(shí)觸發(fā)。不過(guò)根據(jù)DML觸發(fā)器觸發(fā)的方式不同又分為以下兩種情況:(1)AFTER觸發(fā)器:它是在執(zhí)行INSERT、UPDATE、DELETE語(yǔ)句操作之后執(zhí)行觸發(fā)器操作。它主要是用于記錄變更后的處理或檢查,一旦發(fā)生錯(cuò)誤,可以用Rollback Transaction語(yǔ)句來(lái)回滾本次扣件,不過(guò)不能對(duì)視圖定義AFTER觸發(fā)器。(2)INSTEAD OF觸發(fā)器:它在執(zhí)行INSERT、UPDATE、DELETE語(yǔ)句操作之前執(zhí)行觸發(fā)器本身所定義的操作。而INSTEAD OF觸發(fā)器是可以定義在視圖上的。
3、60;在SQL SERVER 2008中,DML觸發(fā)器的實(shí)現(xiàn)使用兩個(gè)邏輯表DELETED和INSERTED。這兩個(gè)表是建立在數(shù)據(jù)庫(kù)服務(wù)器的內(nèi)存中,由系統(tǒng)管理的邏輯表,我們對(duì)于它只有只讀的權(quán)限。DELETED和INSERED表的結(jié)構(gòu)和觸發(fā)器所在的數(shù)據(jù)表的結(jié)構(gòu)是一樣的。當(dāng)觸發(fā)器執(zhí)行完成后,它們也就會(huì)被自動(dòng)刪除。INSERED表用于存放你在操件insert、update、delete語(yǔ)句后,更新的記錄。比如你插入一條數(shù)據(jù),那么就會(huì)把這條記錄插入到INSERTED表。DELETED表用于存放你在操作 insert、update、delete語(yǔ)句前,你創(chuàng)建觸發(fā)器表中數(shù)據(jù)庫(kù)。比如你原來(lái)的表中有三
4、條數(shù)據(jù),那么他也有三條數(shù)據(jù)。下面我們就開(kāi)始創(chuàng)建觸發(fā)器吧!觸發(fā)器定義的格式我就不打一遍,你打開(kāi)幫助里有的事。我們先創(chuàng)建一張如下的表吧!然后以它為例吧。create table table1 (user_id int primary key identity(1,1), user_name varchar(3) not null )下面就是創(chuàng)建一個(gè)簡(jiǎn)單的after觸發(fā)器:create trigger trigMessageList on table1 after insert,update as raiserror('數(shù)據(jù)一致性驗(yàn)證',16,1)此時(shí)如果我們手動(dòng)打開(kāi)table1,輸
5、入一條,根本就插入不了,我們只能寫(xiě)一條如下的SQL語(yǔ)句插入一條數(shù)據(jù)insert into table1(user_name)values('23')結(jié)果數(shù)據(jù)是插入成功了,但是會(huì)出顯如下圖所示的提示:下面我再創(chuàng)建一個(gè)稍微有點(diǎn)復(fù)雜的after觸發(fā)器:-該觸發(fā)器作用是:如果向table1中插入數(shù)據(jù)時(shí),-先檢查要向table1插入的這條的USER_ID是否USERS(我創(chuàng)建的另一個(gè)表)表中的USER_ID字段中有,如果不存在則不允許插入create trigger trigInsertedMessages on table1 after insert as if exists (sel
6、ect * from inserted a where a.user_id not in (select USER_ID from USERS) begin raiserror('數(shù)據(jù)一致性驗(yàn)證',16,1) rollback transaction end inserted of觸發(fā)器和after觸發(fā)器寫(xiě)法差不多,在此就不多寫(xiě)了。下面創(chuàng)建一個(gè)簡(jiǎn)單的DDL觸發(fā)器:-它的作用是:防止數(shù)據(jù)庫(kù)Test(我創(chuàng)建的一個(gè)實(shí)驗(yàn)數(shù)據(jù)庫(kù))中的任一表被修改或刪除create trigger trigDB on database for drop_table,alter_table as
7、print '你一定要禁用觸發(fā)器“trigDB"才能刪除或修改這個(gè)數(shù)據(jù)庫(kù)的表' rollback刪除觸發(fā)器:drop trigger trigDB ON DATABASE一定要記得加上ON DATABASE這條,否則就刪除不了。最后再來(lái)?xiàng)l開(kāi)啟和禁用觸發(fā)器的語(yǔ)句:disable trigger trigDB on database -禁用觸發(fā)器enable trigger trigDB on database -開(kāi)啟觸發(fā)器一 觸發(fā)器是一種特殊的存儲(chǔ)過(guò)程它不能被顯式地調(diào)用而是在往表中插入記錄更新記錄或者刪除記錄時(shí)被自動(dòng)地激活。所以觸發(fā)器可以用來(lái)實(shí)現(xiàn)對(duì)表實(shí)施復(fù)雜的完整性約束
8、。 二 SQL Server為每個(gè)觸發(fā)器都創(chuàng)建了兩個(gè)專(zhuān)用表Inserted表和Deleted表。這兩個(gè)表由系統(tǒng)來(lái)維護(hù)它們存在于內(nèi)存中而不是在數(shù)據(jù)庫(kù)中。這兩個(gè)表的結(jié)構(gòu)總是與被該觸發(fā)器作用的表的結(jié)構(gòu)相同。觸發(fā)器執(zhí)行 完成后與該觸發(fā)器相關(guān)的這兩個(gè)表也被刪除。 Deleted表存放由于執(zhí)行Delete或Update語(yǔ)句而要從表中刪除的所有行。 Inserted表存放由于執(zhí)行Insert或Update語(yǔ)句而要向表中插入的所有行。三Instead of 和 After觸發(fā)器SQL Server2000提供了兩種
9、觸發(fā)器Instead of 和After 觸發(fā)器。這兩種觸發(fā)器的差別在于他們被激活的同Instead of觸發(fā)器用于替代引起觸發(fā)器執(zhí)行的T-SQL語(yǔ)句。除表之外Instead of 觸發(fā)器也可以用于視圖用來(lái)擴(kuò)展視圖可以支持的更新操作。 After觸發(fā)器在一個(gè)Insert,Update或Deleted語(yǔ)句之后執(zhí)行進(jìn)行約束檢查等動(dòng)作都在A(yíng)fter觸發(fā)器被激活之前發(fā)生。After觸發(fā)器只能用于表。一個(gè)表或視圖的每一個(gè)修改動(dòng)作(insert,update和delete)都可以有一個(gè)instead of 觸發(fā)器一個(gè)表的每
10、個(gè)修改動(dòng)作都可以有多個(gè)After觸發(fā)器。四觸發(fā)器的執(zhí)行過(guò)程 如果一個(gè)Insertupdate或者delete語(yǔ)句違反了約束那幺After觸發(fā)器不會(huì)執(zhí)行因?yàn)閷?duì)約束的檢查是在A(yíng)fter觸發(fā)器被激動(dòng)之前發(fā)生的。所以After觸發(fā)器不能超越約束。 Instead of 觸發(fā)器可以取代激發(fā)它的操作來(lái)執(zhí)行。它在Inserted表和Deleted表剛剛建立其它任何操作還沒(méi)有發(fā)生時(shí)被執(zhí)行。因?yàn)镮nstead of 觸發(fā)器在約束之前執(zhí)行所以它可以對(duì)約束進(jìn)行一些預(yù)處理。
11、 五使用T-SQL語(yǔ)句來(lái)創(chuàng)建觸發(fā)器 基本語(yǔ)句如下 create trigger trigger_name on table_name | view_name
12、0; for | After | Instead of insert, update,delete as sql_statement 六刪除觸發(fā)器: 基本語(yǔ)句如下
13、 drop trigger trigger_name 七:查看數(shù)據(jù)庫(kù)中已有觸發(fā)器: - 查看數(shù)據(jù)庫(kù)已有觸發(fā)器use jxcSoftware go select * from sysobjects where xtype='TR' - 查看單個(gè)觸發(fā)器 exec sp_helptext '觸發(fā)器名'八修改觸發(fā)器: 基本語(yǔ)句如下 alter trigger trigger_name
14、0;on table_name | view_name for | After | Instead of insert, update,delete as
15、; sql_statement1、觸發(fā)器實(shí)例Create Table Student( -學(xué)生表 StudentID int primary key, -學(xué)號(hào) .
16、 ) Create Table BorrowRecord( -學(xué)生借書(shū)記錄表 BorrowRecord int identity(1,1), &
17、#160; -流水號(hào) StudentID int , -學(xué)號(hào) BorrowDate
18、 datetime, -借出時(shí)間 ReturnDAte Datetime,
19、0; -歸還時(shí)間 . ) 用到的功能有: 1.如果我更改了學(xué)生的學(xué)號(hào),我希望他的借書(shū)記錄仍然與這個(gè)學(xué)生相關(guān)(也就是同時(shí)更改借書(shū)記錄表的學(xué)號(hào)); 2.如果該學(xué)生已經(jīng)畢業(yè),我希望刪除他的學(xué)號(hào)的同時(shí),也刪除它的借書(shū)記錄。 等等。 這時(shí)候可以用到觸發(fā)器。對(duì)于1,創(chuàng)建一
20、個(gè)Update觸發(fā)器: Create Trigger truStudent On Student -在Student表中創(chuàng)建觸發(fā)器
21、 for Update -為什么事件觸發(fā) As
22、160; -事件觸發(fā)后所要做的事情 if Update(StudentID)
23、60; begin Update BorrowRecord Set StudentID=i.StudentID From BorrowRecord br , Deleted d ,Inserted i
24、60; -Deleted和Inserted臨時(shí)表 Where br.StudentID=d.StudentID end
25、; 理解觸發(fā)器里面的兩個(gè)臨時(shí)的表:Deleted , Inserted 。注意Deleted 與Inserted分別表示觸發(fā)事件的表“舊的一條記錄”和“新的一條記錄”。一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中有兩個(gè)虛擬表用于存儲(chǔ)在表中記錄改動(dòng)的信息,分別是:
26、60; 虛擬表Inserted 虛擬表Deleted在表記錄新增時(shí) 存放新增的記錄 &
27、#160; 不存儲(chǔ)記錄 修改時(shí) 存放用來(lái)更新的新記錄 存放更新前的記錄
28、 刪除時(shí) 不存儲(chǔ)記錄 存放被刪除的記錄
29、 一個(gè)Update 的過(guò)程可以看作為:生成新的記錄到Inserted表,復(fù)制舊的記錄到Deleted表,然后刪除Student記錄并寫(xiě)入新紀(jì)錄。 對(duì)于2,創(chuàng)建一個(gè)Delete觸發(fā)器 Create trigger trdStudent On Student for Delete
30、0;As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 從這兩個(gè)例子我們可以看到了觸發(fā)器的關(guān)鍵:A.2個(gè)臨時(shí)的表;B.觸發(fā)機(jī)制。SQL觸發(fā)器實(shí)例2USE MasterG
31、OIF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = '卷煙庫(kù)存表') DROP TABLE 卷煙庫(kù)存表GOIF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'U' AND NAME = '卷煙銷(xiāo)售表')DROP TABLE 卷煙銷(xiāo)售表GO-業(yè)務(wù)規(guī)則:銷(xiāo)售金額 = 銷(xiāo)售數(shù)量 * 銷(xiāo)售單價(jià) 業(yè)務(wù)規(guī)則。CREATE TABLE 卷煙銷(xiāo)售表( 卷煙品牌 VARCHAR(40) PRIMAR
32、Y KEY NOT NULL, 購(gòu)貨商 VARCHAR(40) NULL, 銷(xiāo)售數(shù)量 INT NULL, 銷(xiāo)售單價(jià) MONEY NULL, 銷(xiāo)售金額 MONEY NULL)GO-業(yè)務(wù)規(guī)則:庫(kù)存金額 = 庫(kù)存數(shù)量 * 庫(kù)存單價(jià) 業(yè)務(wù)規(guī)則。CREATE TABLE 卷煙庫(kù)存表( 卷煙品牌 VARCHAR(40) PRIMARY KEY NOT NULL, 庫(kù)存數(shù)量 INT NULL, 庫(kù)存單價(jià) MONEY NULL, 庫(kù)存金額 MONEY NULL)GO-創(chuàng)建觸發(fā)器,示例1/* 創(chuàng)建觸發(fā)器T_INSERT_卷煙庫(kù)存
33、表,這個(gè)觸發(fā)器較簡(jiǎn)單。說(shuō)明: 每當(dāng)卷煙庫(kù)存表發(fā)生 INSERT 動(dòng)作,則引發(fā)該觸發(fā)器。觸發(fā)器功能: 強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則,保證插入的數(shù)據(jù)中,庫(kù)存金額 = 庫(kù)存數(shù)量 * 庫(kù)存單價(jià)。注意: INSERTED、DELETED為系統(tǒng)表,不可創(chuàng)建、修改、刪除,但可以調(diào)用。重要: 這兩個(gè)系統(tǒng)表的結(jié)構(gòu)同插入數(shù)據(jù)的表的結(jié)構(gòu)。 */IF EXISTS (SELECT NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' AND NAME = 'T_INSERT_卷煙庫(kù)存表')DROP TRIGGER T_INSERT_卷煙庫(kù)存表GOCREATE TRIGGE
34、R T_INSERT_卷煙庫(kù)存表ON 卷煙庫(kù)存表FOR INSERTAS-提交事務(wù)處理BEGIN TRANSACTION-強(qiáng)制執(zhí)行下列語(yǔ)句,保證業(yè)務(wù)規(guī)則UPDATE 卷煙庫(kù)存表SET 庫(kù)存金額 = 庫(kù)存數(shù)量 * 庫(kù)存單價(jià)WHERE 卷煙品牌 IN (SELECT 卷煙品牌 from INSERTED)COMMIT TRANSACTIONGO/* 針對(duì)卷煙庫(kù)存表,插入測(cè)試數(shù)據(jù):注意,第一條數(shù)據(jù)(紅塔山新勢(shì)力)中的數(shù)據(jù)符合業(yè)務(wù)規(guī)則,第二條數(shù)據(jù)(紅塔山人為峰)中,庫(kù)存金額空,不符合業(yè)務(wù)規(guī)則,第三條數(shù)據(jù)(云南映像)中,庫(kù)存金額不等于庫(kù)存數(shù)量乘以庫(kù)存單價(jià),不符合業(yè)務(wù)規(guī)則。第四條數(shù)據(jù)庫(kù)存數(shù)量為0。請(qǐng)注意在
35、插入數(shù)據(jù)后,檢查卷煙庫(kù)存表中的數(shù)據(jù)是否 庫(kù)存金額 = 庫(kù)存數(shù)量 * 庫(kù)存單價(jià)。 */INSERT INTO 卷煙庫(kù)存表(卷煙品牌,庫(kù)存數(shù)量,庫(kù)存單價(jià),庫(kù)存金額)SELECT '紅塔山新勢(shì)力',100,12,1200 UNION ALLSELECT '紅塔山人為峰',100,22,NULL UNION ALLSELECT '云南映像',100,60,500 UNION ALLSELECT '玉溪',0,30,0 GO-查詢(xún)數(shù)據(jù)SELECT * FROM 卷煙庫(kù)存表GO/*結(jié)果集RecordId 卷煙品牌 庫(kù)存數(shù)量 庫(kù)存單價(jià) 庫(kù)存金額
36、- - - - -1 紅塔山新勢(shì)力 100 12.0000 1200.00002 紅塔山人為峰 100 22.0000 2200.00003 云南映像 100 60.0000 6000.00004 玉溪 0 30.0000 .0000(所影響的行數(shù)為 4 行)*/-觸發(fā)器示例2/* 創(chuàng)建觸發(fā)器T_INSERT_卷煙銷(xiāo)售表,該觸發(fā)器較復(fù)雜。說(shuō)明: 每當(dāng)卷煙庫(kù)存表發(fā)生 INSERT 動(dòng)作,則引發(fā)該觸發(fā)器。 觸發(fā)器功能: 實(shí)現(xiàn)業(yè)務(wù)規(guī)則。業(yè)務(wù)規(guī)則: 如果銷(xiāo)售的卷煙品牌不存在庫(kù)存或者庫(kù)存為零,則返回錯(cuò)誤。否則則自動(dòng)減少卷煙庫(kù)存表中對(duì)應(yīng)品牌卷煙的庫(kù)存數(shù)量和庫(kù)存金額。 */IF EXISTS (SELECT
37、 NAME FROM SYSOBJECTS WHERE XTYPE = 'TR' AND NAME = 'T_INSERT_卷煙銷(xiāo)售表')DROP TRIGGER T_INSERT_卷煙銷(xiāo)售表GOCREATE TRIGGER T_INSERT_卷煙銷(xiāo)售表ON 卷煙銷(xiāo)售表FOR INSERTASBEGIN TRANSACTION-檢查數(shù)據(jù)的合法性:銷(xiāo)售的卷煙是否有庫(kù)存,或者庫(kù)存是否大于零IF NOT EXISTS (SELECT 庫(kù)存數(shù)量FROM 卷煙庫(kù)存表WHERE 卷煙品牌 IN (SELECT 卷煙品牌 FROM INSERTED) )BEGIN-返回錯(cuò)誤提
38、示 RAISERROR('錯(cuò)誤!該卷煙不存在庫(kù)存,不能銷(xiāo)售。',16,1)-回滾事務(wù)ROLLBACKRETURNENDIF EXISTS ( SELECT 庫(kù)存數(shù)量 FROM 卷煙庫(kù)存表 WHERE 卷煙品牌 IN (SELECT 卷煙品牌 FROM INSERTED) AND 庫(kù)存數(shù)量 <= 0 ) BEGIN -返回錯(cuò)誤提示 RAISERROR('錯(cuò)誤!該卷煙庫(kù)存小于等于0,不能銷(xiāo)售。',16,1) -回滾事務(wù) ROLLBACK RETURN END-對(duì)合法的數(shù)據(jù)進(jìn)行處理-強(qiáng)制執(zhí)行下列語(yǔ)句,保證業(yè)務(wù)規(guī)則UPDATE 卷煙銷(xiāo)售表SET 銷(xiāo)售金額 = 銷(xiāo)售
39、數(shù)量 * 銷(xiāo)售單價(jià)WHERE 卷煙品牌IN (SELECT 卷煙品牌 FROM INSERTED)DECLARE 卷煙品牌 VARCHAR(40)SET 卷煙品牌 = (SELECT 卷煙品牌 FROM INSERTED) DECLARE 銷(xiāo)售數(shù)量 MONEYSET 銷(xiāo)售數(shù)量 = (SELECT 銷(xiāo)售數(shù)量 FROM INSERTED) UPDATE 卷煙庫(kù)存表SET 庫(kù)存數(shù)量 = 庫(kù)存數(shù)量 - 銷(xiāo)售數(shù)量, 庫(kù)存金額 = (庫(kù)存數(shù)量 - 銷(xiāo)售數(shù)量)*庫(kù)存單價(jià)WHERE 卷煙品牌 = 卷煙品牌COMMIT TRANSACTIONGO-請(qǐng)大家自行跟蹤卷煙庫(kù)存表和卷煙銷(xiāo)售表的數(shù)據(jù)變
40、化。-針對(duì)卷煙銷(xiāo)售表,插入第一條測(cè)試數(shù)據(jù),該數(shù)據(jù)是正常的。INSERT INTO 卷煙銷(xiāo)售表(卷煙品牌,購(gòu)貨商,銷(xiāo)售數(shù)量,銷(xiāo)售單價(jià),銷(xiāo)售金額)SELECT '紅塔山新勢(shì)力','某購(gòu)貨商',10,12,1200GO-針對(duì)卷煙銷(xiāo)售表,插入第二條測(cè)試數(shù)據(jù),該數(shù)據(jù) 銷(xiāo)售金額 不等于 銷(xiāo)售單價(jià) * 銷(xiāo)售數(shù)量。-觸發(fā)器將自動(dòng)更正數(shù)據(jù),使 銷(xiāo)售金額 等于 銷(xiāo)售單價(jià) * 銷(xiāo)售數(shù)量。INSERT INTO 卷煙銷(xiāo)售表(卷煙品牌,購(gòu)貨商,銷(xiāo)售數(shù)量,銷(xiāo)售單價(jià),銷(xiāo)售金額)SELECT '紅塔山人為峰','某購(gòu)貨商',10,22,2000GO-針對(duì)卷煙銷(xiāo)售
41、表,插入第三條測(cè)試數(shù)據(jù),該數(shù)據(jù)中的卷煙品牌在 卷煙庫(kù)存表中找不到對(duì)應(yīng)。-觸發(fā)器將報(bào)錯(cuò)。INSERT INTO 卷煙銷(xiāo)售表(卷煙品牌,購(gòu)貨商,銷(xiāo)售數(shù)量,銷(xiāo)售單價(jià),銷(xiāo)售金額)SELECT '紅河V8','某購(gòu)貨商',10,60,600GO/* 消息 50000,級(jí)別 16,狀態(tài) 1,過(guò)程 T_INSERT_卷煙銷(xiāo)售表,第 15 行 錯(cuò)誤!該卷煙不存在庫(kù)存,不能銷(xiāo)售。 消息 3609,級(jí)別 16,狀態(tài) 1,第 1 行 事務(wù)在觸發(fā)器中結(jié)束。批處理已中止。 */-針對(duì)卷煙銷(xiāo)售表,插入第三條測(cè)試數(shù)據(jù),該數(shù)據(jù)中的卷煙品牌在 卷煙庫(kù)存表中庫(kù)存為0。-觸發(fā)器將報(bào)錯(cuò)。INSERT
42、INTO 卷煙銷(xiāo)售表(卷煙品牌,購(gòu)貨商,銷(xiāo)售數(shù)量,銷(xiāo)售單價(jià),銷(xiāo)售金額)SELECT '玉溪','某購(gòu)貨商',10,30,300GO/* 消息 50000,級(jí)別 16,狀態(tài) 1,過(guò)程 T_INSERT_卷煙銷(xiāo)售表,第 29 行 錯(cuò)誤!該卷煙庫(kù)存小于等于0,不能銷(xiāo)售。 消息 3609,級(jí)別 16,狀態(tài) 1,第 1 行 事務(wù)在觸發(fā)器中結(jié)束。批處理已中止。 */-查詢(xún)數(shù)據(jù)SELECT * FROM 卷煙庫(kù)存表SELECT * FROM 卷煙銷(xiāo)售表GO補(bǔ)充: 1、本示例主要通過(guò)一個(gè)簡(jiǎn)單的業(yè)務(wù)規(guī)則實(shí)現(xiàn)來(lái)進(jìn)行觸發(fā)器使用的說(shuō)明,具體的要根據(jù)需要靈活處理; 2
43、、關(guān)于觸發(fā)器要理解并運(yùn)用好 INSERTED ,DELETED 兩個(gè)系統(tǒng)表; 3、本示例創(chuàng)建的觸發(fā)器都是 FOR INSERT ,具體的語(yǔ)法可參考:Trigger語(yǔ)法 CREATE TRIGGER trigger_name ON table | view WITH ENCRYPTION -用于加密觸發(fā)器 FOR | AFTER | INSTEAD OF INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF U
44、PDATE ( column ) AND | OR UPDATE ( column ) .n | IF ( COLUMNS_UPDATED ( ) bitwise_operator updated_bitmask ) comparison_operator column_bitmask .n sql_statement .n 4、關(guān)于觸發(fā)器,還應(yīng)該注意 (1)、DELETE 觸發(fā)器不能捕獲 TRUNCATE TABLE 語(yǔ)句。 (2)、觸發(fā)器中不允許以下 Transact-SQL 語(yǔ)句: ALTER DATABASE CREATE DATABASE DISK INIT DISK RESIZE DROP DATABASE LOAD D
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 去里查合同范本
- 北京前期物業(yè)合同范本
- 博美寵物幼犬買(mǎi)賣(mài)合同范本
- 單間公寓出租合同范本
- 合同范本書(shū)寫(xiě)規(guī)范
- 單位用人合同范本
- 珊瑚砂改良降堿及對(duì)土壤及植物養(yǎng)分、水分利用的影響
- 包餐合同范本
- 合同范本 博客寫(xiě)
- 太倉(cāng)拆除合同范本
- 2025中國(guó)人民保險(xiǎn)集團(tuán)校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 中國(guó)食物成分表2020年權(quán)威完整改進(jìn)版
- 伊斯蘭法 外國(guó)法制史 教學(xué)課課件
- 增額終身壽險(xiǎn)的購(gòu)買(mǎi)理由
- 【MOOC】影視鑒賞-揚(yáng)州大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 智研咨詢(xún)發(fā)布:2025年中國(guó)商用密碼行業(yè)市場(chǎng)現(xiàn)狀、發(fā)展概況、未來(lái)前景分析報(bào)告
- 《氫科學(xué)技術(shù)應(yīng)用》課件-3-1 氫氣的儲(chǔ)存
- 2023年黑龍江省牡丹江市中考?xì)v史試卷(原卷版)
- 精神科護(hù)理高風(fēng)險(xiǎn)
- 二年級(jí)數(shù)學(xué)下冊(cè)重點(diǎn)思維每日一練小紙條
- 國(guó)家安全教育教案分享
評(píng)論
0/150
提交評(píng)論