SQL Server誤區(qū)30日談 第4天 DDL觸發(fā)器就是INSTEAD OF觸發(fā)器
誤區(qū) #4: DDL觸發(fā)器(SQL Server 2005之后被引入)就是INSTEAD OF觸發(fā)器
這是錯誤的
DDL觸發(fā)器的實現(xiàn)原理其實就是一個AFTER觸發(fā)器。這個意思是先發(fā)生DDL操作,然后觸發(fā)器再捕捉操作(當然如果你在觸發(fā)器內寫了Rollback,則也可能回滾)。
存在Rollback也意味著這個觸發(fā)器并不像你想象的那么輕量,來看下面的例子:
ALTER TABLE MyBigTable ADD MyNewNonNullColumn VARCHAR (20) DEFAULT 'Paul'
如果存在一個defined for ALTER_TABLE事件的DDL觸發(fā)器,或是一個更寬泛的事件比如DDL_TABLE_EVENTS。上面那個DDL代碼將會對表中每一行數(shù)據(jù)加進新列,之后觸發(fā)觸發(fā)器操作。如果你的觸發(fā)器中存在回滾來阻止DDL操作發(fā)生,那么這個代價可不小(不信的話你自己看看這么做后產(chǎn)生的日志)。
當然更好的辦法是對ALTER設置GRANT或是DENY權限,或是僅僅允許通過你創(chuàng)建的存儲過程進行DDL操作。
但不管怎么樣,雖然DDL觸發(fā)器可以達到禁止DDL的操作的目的,但代價昂貴。而DDL觸發(fā)器的好處是允許記錄某些人做了某些修改表之類的操作,所以我并不是說不允許DDL觸發(fā)器,而是要小心使用。
Kimberly有一篇非常好的關于DDL觸發(fā)器的博文:”。
- 關于喜憂參半的SQL Server觸發(fā)器詳解
- 利用SQL Server觸發(fā)器實現(xiàn)表的歷史修改痕跡記錄
- SQLSERVER對加密的存儲過程、視圖、觸發(fā)器進行解密(推薦)
- SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件步驟詳解
- SQL Server實現(xiàn)用觸發(fā)器捕獲DML操作的會話信息【實例】
- SQL Server:觸發(fā)器實例詳解
- SqlServer觸發(fā)器詳解
- SqlServer實現(xiàn)類似Oracle的before觸發(fā)器示例
- SQL SERVER中各類觸發(fā)器的完整語法及參數(shù)說明
- SQL SERVER 觸發(fā)器介紹
- SQL Server 觸發(fā)器詳情
相關文章
SQL事務用法begin tran,commit tran和rollback tran的用法
Sql Server 2005/2008中提供了begin tran,commit tran和rollback tran來使用事務。begin tran表示開始事務, commit tran表示提交事務,rollback tran表示回滾事物2011-12-12使用FORFILES命令來刪除SQLServer備份的批處理
利用這些參數(shù)可以構造下面的例子來解決你刪除備份腳本文件的難題。你可以基于更改時間/日期或者備份類型來創(chuàng)建腳本。你甚至可以構造能夠同時參照兩種標準的腳本2012-05-05SQL Server跨服務器操作數(shù)據(jù)庫的圖文方法(LinkedServer)
這篇文章主要介紹了SQL Server跨服務器操作數(shù)據(jù)庫的方法,通過鏈接服務器(LinkedServer)實現(xiàn)SQL Server遠程鏈接MySql等數(shù)據(jù)庫,需要的朋友可以參考下2022-10-10SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE詳解
這篇文章主要介紹了SQL SERVER 2012新增函數(shù)之邏輯函數(shù)CHOOSE的相關資料,文中介紹的很詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03SQL?Server開發(fā)智能提示插件SQL?Prompt介紹
這篇文章介紹了SQL?Server開發(fā)智能提示插件SQL?Prompt,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05sqlserver 日志恢復方法(搞定drop和truncate)
這是一次數(shù)據(jù)恢復中,我們老大在Sql中敲的,我這里最想記錄的是他優(yōu)良的代碼風格.2009-10-10sql server2012附加數(shù)據(jù)庫問題解決方法
這篇文章主要介紹了sql server2012附加數(shù)據(jù)庫問題解決方法,需要的朋友可以參考下2014-05-05