程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> SQL Server誤區30日談 第4天 DDL觸發器就是INSTEAD OF觸發器

SQL Server誤區30日談 第4天 DDL觸發器就是INSTEAD OF觸發器

編輯:MSSQL

SQL Server誤區30日談 第4天 DDL觸發器就是INSTEAD OF觸發器。本站提示廣大學習愛好者:(SQL Server誤區30日談 第4天 DDL觸發器就是INSTEAD OF觸發器)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL Server誤區30日談 第4天 DDL觸發器就是INSTEAD OF觸發器正文


誤區 #4: DDL觸發器(SQL Server 2005以後被引入)就是INSTEAD OF觸發器

這是毛病的

    DDL觸發器的完成道理其實就是一個AFTER觸發器。這個意思是先產生DDL操作,然後觸發器再捕獲操作(固然假如你在觸發器內寫了Rollback,則也能夠回滾)。

    存在Rollback也意味著這個觸發器其實不像你想象的那末輕量,來看上面的例子:

    ALTER TABLE MyBigTable ADD MyNewNonNullColumn VARCHAR (20) DEFAULT 'Paul'

    假如存在一個defined for ALTER_TABLE事宜的DDL觸發器,或是一個更廣泛的事宜好比DDL_TABLE_EVENTS。下面誰人DDL代碼將會對表中每行數據加進新列,以後觸發觸發器操作。假如你的觸發器中存在回滾來阻攔DDL操作產生,那末這個價值可不小(不信的話你本身看看這麼做後發生的日記)。

    固然更好的方法是對ALTER設置GRANT或是DENY權限,或是僅僅許可經由過程你創立的存儲進程停止DDL操作。

    但不論怎樣樣,固然DDL觸發器可以到達制止DDL的操作的目標,但價值昂貴。而DDL觸發器的利益是許可記載某些人做了某些修正表之類的操作,所以我其實不是說不許可DDL觸發器,而是要當心應用。

    Kimberly有一篇異常好的關於DDL觸發器的博文:"EXECUTE AS" and an important update your DDL Triggers (for auditing or prevention)”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved