DDL觸發器與DML觸發器比較

2022-03-28 16:37:44 字數 1430 閱讀 8639

dml觸發器

要防止對資料庫架構進行某些更改。  希望資料庫中發生某種情況以響應資料庫架構中的更改。 要記錄資料庫架構中的更改或事件。  僅在執行觸發 ddl 觸發器的 ddl 語句後,ddl 觸發器才會激發。ddl 觸發器無法作為 instead of 觸發器使用。  下面的示例顯示如何使用 ddl 觸發器阻止修改或刪除資料庫中的任何表。 create trigger safety  on database   for drop_table, alter_table  as      print you must disable trigger "safety" to drop or alter tables!    rollback   可以激發 ddl 觸發器以響應在當前資料庫或當前伺服器中處理的 transact-sql 事件。觸發器的作用域取決於事件。有關 ddl 觸發器作用域的詳細資訊,請參閱設計 ddl 觸發器。 若要獲取 adventureworks2008r2 示例資料庫中提供的 ddl 觸發器示例,請在 sql server management studio 的物件資源管理器中開啟位於 adventureworks2008r2 資料庫的「可程式設計性」資料夾中的 database triggers 資料夾。右鍵單擊 ddldatabasetriggerlog 並選擇「編寫資料庫觸發器指令碼為」。預設情況下,ddl 觸發器 ddldatabasetriggerlog 處於禁用狀態

ddl觸發器和dml觸發器的用處不同

dml 觸發器在 insert、update 和 delete 語句上操作,並且有助於在表或檢視中修改資料時強制業務規則,擴充套件資料完整性。  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 觸發器時,請從下列幾個方面考慮它們與 dml 觸發器的不同:  只有在完成 transact-sql 語句後才執行 ddl 觸發器。ddl 觸發器無法作為 instead of 觸發器使用。  ddl 觸發器不會建立插入的和刪除的表。可以使用 eventdata 函式捕獲有關激發 ddl 觸發器的事件以及觸發器導致的後續更改的資訊。

DML觸發器觸發順序

dml觸發器觸發時,dml語句的執行順序 1 語句之前級觸發器 2 行之前級觸發器 3 語句本身 4 行之後級觸發器 5 語句之後級觸發器 例如對錶table new進行更新,使用臨時表記錄觸發器的激發順序,如 所示 語句之前級觸發器 create or replace trigger bstate...

觸發器 mysql觸發器

觸發器是一種特殊的儲存過程,它在插入 刪除或修改特定表中的資料時觸發執行,它比資料庫本身標準的功能有更精細和更複雜的資料控制能力。和儲存過程一樣,很少使用。1 觸發器的作用 2 建立觸發器 建立測試環境 mysql create database test db query ok,1 row aff...

DML觸發器的缺憾

tom說過他希望三樣東西不曾存在 觸發器,自治事務,when others 級聯刪除 級聯修改,在設計良好的系統中是不存在的 即使有,那也是小概率事件,必須專門寫一段指令碼來解決,而不是作為常規功能存在 不得不用觸發器,要麼是原系統模組化做得不夠好,要麼是不允許改動原有的 當然有時候不是不允許,而是...