欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server誤區(qū)30日談 第4天 DDL觸發(fā)器就是INSTEAD OF觸發(fā)器

 更新時間:2013年01月09日 18:52:01   作者:  
DDL觸發(fā)器的實現(xiàn)原理其實就是一個AFTER觸發(fā)器。這個意思是先發(fā)生DDL操作,然后觸發(fā)器再捕捉操作(當然如果你在觸發(fā)器內寫了Rollback,則也可能回滾)

誤區(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ā)器的博文:”。

相關文章

最新評論