ENABLE TRIGGER (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
啟用 DML、DDL 或登入觸發程序。
語法
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
引數
schema_name
這是觸發程序所屬的結構描述名稱。 您不能為 DDL 或登入觸發程序指定 schema_name。
trigger_name
這是您要啟用的觸發程序名稱。
ALL
指出啟用在 ON 子句範圍內定義的所有觸發程序。
object_name
為建立 DML 觸發程序 trigger_name 以便在其中執行的資料表或檢視名稱。
DATABASE
如果是 DDL 觸發程序,它會指出已經建立或修改 trigger_name,以在資料庫範圍內執行。
ALL SERVER
適用於:SQL Server 2008 (10.0.x) 和更新版本。
如果是 DDL 觸發程序,它會指出已經建立或修改 trigger_name,以在伺服器範圍內執行。 ALL SERVER 也適用於登入觸發程序。
注意
自主資料庫無法使用這個選項。
備註
啟用觸發程序並不會重新建立它。 停用的觸發程序仍然是目前資料庫中的一個物件,但不會引發。 若要啟用觸發程序,可讓其於原先以程式設計方式進行觸發的 Transact-SQL 陳述式在執行時,加以觸發。 您可以使用 DISABLE TRIGGER 停用觸發程序。 您也可以使用 ALTER TABLE,來停用或啟用資料表上定義的 DML 觸發程序。
權限
若要啟用 DML 觸發程序,使用者在建立此觸發程序的資料表或檢視上至少需要有 ALTER 權限。
若要啟用伺服器範圍 (ON ALL SERVER) 的 DDL 觸發程序或登入觸發程序,使用者在伺服器上需要有 CONTROL SERVER 權限。 若要啟用資料庫範圍 (ON DATABASE) 的 DDL 觸發程序,使用者在目前資料庫中至少需要有 ALTER ANY DATABASE DDL TRIGGER 權限。
範例
A. 啟用資料表的 DML 觸發程序
下列範例會停用 AdventureWorks 資料庫中由 uAddress
資料表所建立的觸發程序 Address
,然後啟用它。
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO
B. 啟用 DDL 觸發程序
下列範例會建立資料庫範圍的 DDL 觸發程序 safety
,然後停用它並再次啟用。
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
ENABLE TRIGGER safety ON DATABASE;
GO
C. 啟用以相同範圍來定義的所有觸發程序
下列範例會啟用在伺服器範圍建立的所有 DDL 觸發程序。
適用於:SQL Server 2008 (10.0.x) 和更新版本。
ENABLE Trigger ALL ON ALL SERVER;
GO
另請參閱
DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)