ddl觸發(fā)器包括 DML觸發(fā)器DDL觸發(fā)器有什么區(qū)別?
DML觸發(fā)器DDL觸發(fā)器有什么區(qū)別?一個(gè)用于此數(shù)據(jù)庫(kù),另一個(gè)用于整個(gè)實(shí)例。在這種情況下,所有的數(shù)據(jù)庫(kù)都是有效的觸發(fā)器是SQL server提供給程序員和數(shù)據(jù)分析人員的一種方法,以確保數(shù)據(jù)的完整性。它是
DML觸發(fā)器DDL觸發(fā)器有什么區(qū)別?
一個(gè)用于此數(shù)據(jù)庫(kù),另一個(gè)用于整個(gè)實(shí)例。在這種情況下,所有的數(shù)據(jù)庫(kù)都是有效的
觸發(fā)器是SQL server提供給程序員和數(shù)據(jù)分析人員的一種方法,以確保數(shù)據(jù)的完整性。它是一個(gè)與表事件相關(guān)的特殊存儲(chǔ)過(guò)程。它的執(zhí)行不是由程序調(diào)用或手動(dòng)啟動(dòng)的,而是由事件觸發(fā)的。例如,當(dāng)一個(gè)表被操作(insert、delete、update)時(shí),它的執(zhí)行將被激活。觸發(fā)器通常用于強(qiáng)制執(zhí)行數(shù)據(jù)完整性約束和業(yè)務(wù)規(guī)則。觸發(fā)器可用于在寫(xiě)入數(shù)據(jù)表之前強(qiáng)制驗(yàn)證或轉(zhuǎn)換數(shù)據(jù)。當(dāng)觸發(fā)錯(cuò)誤發(fā)生時(shí),更改的結(jié)果將被撤銷(xiāo)。一些數(shù)據(jù)庫(kù)管理系統(tǒng)可以將觸發(fā)器用于數(shù)據(jù)定義語(yǔ)言(DDL),稱(chēng)為DDL觸發(fā)器。可根據(jù)具體情況更換。sqlserver包括三種觸發(fā)器:DML觸發(fā)器、DDL觸發(fā)器和login觸發(fā)器。
1. DML觸發(fā)器當(dāng)數(shù)據(jù)庫(kù)表中的數(shù)據(jù)發(fā)生變化時(shí),包括insert、update、delete等任何操作,如果我們將相應(yīng)的DML觸發(fā)器寫(xiě)入表中,那么觸發(fā)器將自動(dòng)執(zhí)行。DML觸發(fā)器的主要功能是執(zhí)行業(yè)務(wù)規(guī)則并擴(kuò)展sqlserver約束和默認(rèn)值。因?yàn)槲覀冎兰s束只能約束同一個(gè)表中的數(shù)據(jù),任意SQL命令都可以在觸發(fā)器中執(zhí)行。
2. DDL觸發(fā)器是sqlserver2005中的一個(gè)新觸發(fā)器。主要用于對(duì)數(shù)據(jù)庫(kù)中的表、觸發(fā)器、視圖等結(jié)構(gòu)的操作進(jìn)行審計(jì)和標(biāo)準(zhǔn)化。例如,在修改表、修改列、添加表、添加列等。它是在數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化時(shí)實(shí)現(xiàn)的。我們主要用它來(lái)記錄數(shù)據(jù)庫(kù)的修改過(guò)程,并限制程序員對(duì)數(shù)據(jù)庫(kù)的修改,比如不允許刪除一些指定的表。
3. Login觸發(fā)器Login觸發(fā)器觸發(fā)存儲(chǔ)過(guò)程以響應(yīng)登錄事件。在與SQL server實(shí)例建立用戶會(huì)話時(shí)引發(fā)此事件。登錄觸發(fā)器在登錄的身份驗(yàn)證階段完成之后和用戶會(huì)話實(shí)際建立之前觸發(fā)。因此,所有來(lái)自觸發(fā)器內(nèi)部并通常到達(dá)用戶的消息(如錯(cuò)誤消息和來(lái)自print語(yǔ)句的消息)都會(huì)發(fā)送到sqlserver錯(cuò)誤日志。如果身份驗(yàn)證失敗,則不會(huì)觸發(fā)登錄觸發(fā)器。
各類(lèi)觸發(fā)器的特點(diǎn)?
什么是觸發(fā)器?它是一種特殊的存儲(chǔ)過(guò)程,與數(shù)據(jù)庫(kù)對(duì)象密切相關(guān)。它不能直接調(diào)用,但應(yīng)該由事件觸發(fā)。如果數(shù)據(jù)庫(kù)對(duì)象中的結(jié)構(gòu)或數(shù)據(jù)發(fā)生更改,將自動(dòng)強(qiáng)制執(zhí)行,但不控制創(chuàng)建前存儲(chǔ)在表中的現(xiàn)有數(shù)據(jù)。
觸發(fā)器的組成和分類(lèi)]觸發(fā)器的組成分為三個(gè)部分,即觸發(fā)器事件或語(yǔ)句、觸發(fā)器限制條件和觸發(fā)器主體。它分為兩類(lèi),DML觸發(fā)器和DDL觸發(fā)器。
當(dāng)數(shù)據(jù)庫(kù)中發(fā)生數(shù)據(jù)操作語(yǔ)言事件時(shí)調(diào)用DML trigger,而DDL trigger用于觸發(fā)存儲(chǔ)過(guò)程以響應(yīng)事件,可響應(yīng)多個(gè)數(shù)據(jù)定義語(yǔ)言語(yǔ)句觸發(fā)存儲(chǔ)過(guò)程。因此,數(shù)據(jù)操作語(yǔ)言對(duì)應(yīng)于DML觸發(fā)器,而數(shù)據(jù)定義語(yǔ)言對(duì)應(yīng)于DDL觸發(fā)器。
DML觸發(fā)器和DDL觸發(fā)器有相同的點(diǎn)和相同點(diǎn),也有不同點(diǎn)
相同點(diǎn);都可以嵌套??梢詾橥籺ransact-SQL語(yǔ)句創(chuàng)建多個(gè)觸發(fā)器??梢栽贛icrosoft中運(yùn)行,創(chuàng)建多個(gè)SQL語(yǔ)句觸發(fā)器,可以在Microsoft中運(yùn)行,在net framework中創(chuàng)建和上載SQL server程序集打包的托管代碼。
異同:DML觸發(fā)器對(duì)insert、UPDATE和delete語(yǔ)句進(jìn)行操作,這有助于在修改表或視圖中的數(shù)據(jù)時(shí)強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則并擴(kuò)展數(shù)據(jù)完整性。DDL觸發(fā)器對(duì)create date和delete語(yǔ)句進(jìn)行操作,這有助于在修改表或視圖中的數(shù)據(jù)時(shí)強(qiáng)制執(zhí)行業(yè)務(wù)規(guī)則并擴(kuò)展數(shù)據(jù)完整性。DDL觸發(fā)器操作create、alter、alter、drop或其他DDL語(yǔ)句,這些語(yǔ)句用于執(zhí)行管理任務(wù)并強(qiáng)制影響數(shù)據(jù)庫(kù)的業(yè)務(wù)規(guī)則。在數(shù)字電路中,觸發(fā)器是一個(gè)重要的單元電路,是時(shí)序邏輯電路的重要單元。觸發(fā)器按功能可分為RS觸發(fā)器、JK觸發(fā)器、D觸發(fā)器和t觸發(fā)器,按結(jié)構(gòu)可分為基本觸發(fā)器、主從觸發(fā)器、擴(kuò)展邊觸發(fā)器和同步觸發(fā)器。