DDL觸發器與DML觸發器比較_第1頁
DDL觸發器與DML觸發器比較_第2頁
DDL觸發器與DML觸發器比較_第3頁
DDL觸發器與DML觸發器比較_第4頁
DDL觸發器與DML觸發器比較_第5頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、DML觸發器DML觸發器就是普通的INSERT / UPDATE / DELETE 觸發器。DDL觸發器就是一些特有的DDL 語句的觸發器。例如:登陸到服務器的觸發,創建數據庫的觸發。DML 觸發器是當數據庫服務器中發生數據操作語言(DML 事件時要執行的操作。DML 事件包括對表或視圖發出的UPDATE、INSERT 或DELETE 語句。DML 觸發器用于在數據被修改時強制執行業務規則,以及擴展Microsoft SQL Server 約束、默認值和規則的完整性檢查邏輯。MicrosoftSQL Server 提供兩種主要機制來強制使用業務規則和數據完整性:約束和觸發器。觸發器為特殊類型的

2、存儲過程,可在執行語言事件時自動生效。SQL Server 包括三種常規類型的觸發器:DML 觸發器、DDL 觸發器和登錄觸發器。當服務器或數據庫中發生數據定義語言(DDL 事件時將調用DDL 觸發器。有關詳細說明,請參閱DDL 觸發器。登錄觸發器將為響應LOGON 事件而激發存儲過程。與SQL Server 實例建立用戶會話時將引發此事件。有關詳細信息,請參閱登錄觸發器。當數據庫中發生數據操作語言(DML 事件時將調用DML 觸發器。DML 事件包括在指定表或視圖中修改數據的INSERT 語句、UPDATE 語句或DELETE 語句。DML 觸發器可以查詢其他表,還可以包含復雜的Transa

3、ct-SQL 語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待。如果檢測到錯誤(例如,磁盤空間不足,則整個事務即自動回滾。DML 觸發器在以下方面非常有用:DML 觸發器可通過數據庫中的相關表實現級聯更改。不過,通過級聯引用完整性約束可以更有效地進行這些更改。DML 觸發器可以防止惡意或錯誤的INSERT、UPDATE 以及DELETE 操作,并強制執行比CHECK 約束定義的限制更為復雜的其他限制。與CHECK 約束不同,DML 觸發器可以引用其他表中的列。例如,觸發器可以使用另一個表中的SELECT 比較插入或更新的數據,以及執行其他操作,如修改數據或顯示用戶定義錯誤信息。D

4、ML 觸發器可以評估數據修改前后表的狀態,并根據該差異采取措施。一個表中的多個同類DML 觸發器(INSERT、UPDATE 或DELETE允許采取多個不同的操作來響應同一個修改語句。DDL觸發器DDL 觸發器是一種特殊的觸發器,它在響應數據定義語言(DDL 語句時觸發。它們可以用于在數據庫中執行管理任務,例如,審核以及規范數據庫操作。像常規觸發器一樣,DDL 觸發器將激發存儲過程以響應事件。但與DML 觸發器不同的是,它們不會為響應針對表或視圖的UPDATE、INSERT 或DELETE 語句而激發。相反,它們將為了響應各種數據定義語言(DDL 事件而激發。這些事件主要與以關鍵字CREATE

5、、ALTER 和DROP 開頭的Transact-SQL 語句對應。執行DDL 式操作的系統存儲過程也可以激發DDL 觸發器。重要提示:測試您的DDL 觸發器以確定它們是否響應運行的系統存儲過程。例如,CREATE TYPE 語句和sp_addtype 存儲過程都將激發針對CREATE_TYPE 事件創建的DDL 觸發器。.DDL 觸發器可用于管理任務,例如審核和控制數據庫操作。如果要執行以下操作,請使用DDL 觸發器:要防止對數據庫架構進行某些更改。希望數據庫中發生某種情況以響應數據庫架構中的更改。要記錄數據庫架構中的更改或事件。僅在運行觸發DDL 觸發器的DDL 語句后,DDL 觸發器才會

6、激發。DDL 觸發器無法作為INSTEAD OF 觸發器使用。下面的示例顯示如何使用DDL 觸發器阻止修改或刪除數據庫中的任何表。CREATE TRIGGER safetyON DATABASEFOR DROP_TABLE, ALTER_TABLEASPRINT 'You must disable Trigger "safety" to drop or alter tables!'ROLLBACK ;可以激發DDL 觸發器以響應在當前數據庫或當前服務器中處理的Transact-SQL 事件。觸發器的作用域取決于事件。有關DDL 觸發器作用域的詳細信息,請參閱

7、設計DDL 觸發器。若要獲取AdventureWorks2008R2 示例數據庫中提供的DDL 觸發器示例,請在SQL Server Management Studio 的對象資源管理器中打開位于AdventureWorks2008R2 數據庫的“可編程性”文件夾中的Database Triggers 文件夾。右鍵單擊ddlDatabaseTriggerLog 并選擇“編寫數據庫觸發器腳本為”。默認情況下,DDL 觸發器ddlDatabaseTriggerLog 處于禁用狀態DDL觸發器和DML觸發器的用處不同DML 觸發器在INSERT、UPDATE 和DELETE 語句上操作,并且有助于在

8、表或視圖中修改數據時強制業務規則,擴展數據完整性。DDL 觸發器對CREATE、ALTER、DROP 和其他DDL 語句以及執行DDL 式操作的存儲過程執行操作。它們用于執行管理任務,并強制影響數據庫的業務規則。它們應用于數據庫或服務器中某一類型的所有命令。可以使用相似的Transact-SQL 語法創建、修改和刪除DML 觸發器和DDL 觸發器,它們還具有其他相似的行為。與DML 觸發器相同,DDL 觸發器可以運行在Microsoft.NET Framework 中創建的以及在SQL Server 中上載的程序集中打包的托管代碼。與DML 觸發器相同,可以為同一個Transact-SQL 語句創建多個DDL 觸發器。同時,DDL 觸發器和激發它的語句運行在相同的事務中。可從觸發器中回滾此事務。嚴重錯誤可能會導致整個事務自動回滾。從批處理中運行并顯式包含ROLLBACK TRANSACTION 語句的DDL觸發器將取消整個批處理。注意不能回滾發生在DDL 觸發器正文內的ALTER DATABASE 事件。與DML 觸發器相同,可以嵌套DDL 觸發器。設計DDL 觸發器時,請從下列幾個方面考慮它們與DM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論