本文件已封存並已停止維護。
DISABLE TRIGGER (Transact-SQL)
SQL Server 2005
更新:
2006 年 12 月 12 日
停用 DML、DDL 或登入觸發程序。
- schema_name
-
這是觸發程序所屬的結構描述名稱。DDL 或登入觸發程序無法指定 schema_name。
- trigger_name
-
這是要停用的觸發程序名稱。
- ALL
-
指出只要是在 ON 子句範圍定義的觸發程序一律停用。
注意: SQL Server 會在發行用來進行合併式複寫的資料庫中建立觸發程序。在已發行的資料庫中指定 ALL,會停用這些觸發程序,這會中斷複寫。指定 ALL 之前,請先確認未針對合併式複寫發行目前的資料庫。
- object_name
-
這是建立 DML 觸發程序 trigger_name 加以執行的資料表或檢視名稱。
- DATABASE
-
如果是 DDL 觸發程序,它會指出 trigger_name 已經建立或修改,以資料庫範圍執行。
- ALL SERVER
-
如果是 DDL 或登入觸發程序,它會指出 trigger_name 已經建立或修改,以伺服器範圍執行。
依預設,在建立觸發程序時,它是在啟用狀態。即使停用觸發程序,也不會卸除它。觸發程序仍然是目前資料庫中的一個物件。不過,只要編寫它的任何 Transact-SQL 陳述式在執行時,觸發程序就不會引發。觸發程序可以使用 ENABLE TRIGGER 重新啟用。您也可以利用 ALTER TABLE,來停用或啟用資料表上定義的 DML 觸發程序。
A. 停用資料表的 DML 觸發程序
下列範例會停用在 Address 資料表中建立的觸發程序 uAddress。
USE AdventureWorks; GO DISABLE TRIGGER Person.uAddress ON Person.Address; GO
B. 停用 DDL 觸發程序
下列範例會以資料庫範圍建立 DDL 觸發程序 safety,然後再停用它。
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK;
GO
DISABLE TRIGGER safety ON DATABASE;
GO
C. 停用所有以相同範圍定義的觸發程序
下列範例會停用在伺服器範圍建立的所有 DDL 和登入觸發程序。
USE AdventureWorks; GO DISABLE Trigger ALL ON ALL SERVER; GO
顯示:

