資源描述:
《淺談sqlserver觸發(fā)器的使用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、淺談SQLServer觸發(fā)器的使用>>教育資源庫(kù) 觸發(fā)器建立的代碼Create Trigger TG_ProjectNameOn table1After Update AsUpdate table2Set [工程名]=b.工程名from table2 a,inserted bage列;然而,允許INSTEADOF觸發(fā)器引用這些列。有關(guān)更多信息,請(qǐng)參見(jiàn)CREATETRIGGER。 在INSTEADOF觸發(fā)器中使用inserted和deleted表 傳遞到在表上定義的INSTEADOF觸發(fā)器的inserted和deleted表遵從與傳遞到AFTER
2、觸發(fā)器的inserted和deleted表相同的規(guī)則。inserted和deleted表的格式與在其上定義INSTEADOF觸發(fā)器的表的格式相同。inserted和deleted表中的每一列都直接映射到基表中的列?! ∮嘘P(guān)引用帶INSTEADOF觸發(fā)器的表的INSERT或UPDATE語(yǔ)句何時(shí)必須提供列值的規(guī)則與表沒(méi)有INSTEADOF觸發(fā)器時(shí)相同: 不能為計(jì)算列或具有timestamp數(shù)據(jù)類型的列指定值?! 〔荒転榫哂蠭DENTITY屬性的列指定值,除非該列的IDENTITY_INSERT為ON。當(dāng)IDENTITY_INSERT為ON時(shí),INSER
3、T語(yǔ)句必須提供一個(gè)值。INSERT語(yǔ)句必須為所有無(wú)DEFAULT約束的NOTNULL列提供值?! ?duì)于除計(jì)算列、標(biāo)識(shí)列或timestamp列以外的任何列,任何允許空值的列或具有DEFAULT定義的NOTNULL列的值都是可選的。 當(dāng)INSERT、UPDATE或DELETE語(yǔ)句引用具有INSTEADOF觸發(fā)器的視圖時(shí),數(shù)據(jù)庫(kù)引擎將調(diào)用該觸發(fā)器,而不是對(duì)任何表采取任何直接操作。即使為視圖生成的inserted和deleted表中的信息格式與基表中的數(shù)據(jù)格式不同,該觸發(fā)器在生成執(zhí)行基表中的請(qǐng)求操作所需的任何語(yǔ)句時(shí),仍必須使用inserted和delete
4、d表中的信息。 傳遞到在視圖上定義的INSTEADOF觸發(fā)器的inserted和deleted表格式與為該視圖定義的SELECT語(yǔ)句的選擇列表相匹配。例如:CREATE VIE Northployees 視圖的結(jié)果集有三列:一個(gè)int列和兩個(gè)nvarchar列。傳遞到在視圖上定義的INSTEADOF觸發(fā)器的inserted和deleted表也具有名為EmployeeID的int列、名為L(zhǎng)Name的nvarchar列和名為FName的nvarchar列?! ∫晥D的選擇列表還包含不直接映射到單個(gè)基表列的表達(dá)式。一些視圖表達(dá)式(如常量調(diào)用或函數(shù)調(diào)用)
5、可能不引用任何列,這類表達(dá)式會(huì)被忽略。復(fù)雜的表達(dá)式會(huì)引用多列,但在inserted和deleted表中,每個(gè)插入的行僅有一個(gè)值。如果視圖中的簡(jiǎn)單表達(dá)式引用具有復(fù)雜表達(dá)式的計(jì)算列,則這些簡(jiǎn)單表達(dá)式也有同樣的問(wèn)題。視圖上的INSTEADOF觸發(fā)器必須處理這些類型的表達(dá)式。有關(guān)更多信息,請(qǐng)參見(jiàn)視圖上INSTEADOF觸發(fā)器中的表達(dá)式和計(jì)算列?! №槺阏f(shuō)一下,當(dāng)對(duì)某張表建立觸發(fā)器后,分3種情況討論 1.插入操作(Insert) Inserted表有數(shù)據(jù),Deleted表無(wú)數(shù)據(jù) 2.刪除操作(Delete) Inserted表無(wú)數(shù)據(jù),Deleted表有
6、數(shù)據(jù) 3.更新操作(Update) Inserted表有數(shù)據(jù)(新數(shù)據(jù)),Deleted表有數(shù)據(jù)(舊數(shù)據(jù))>>>>這篇文章來(lái)自..,。