DROP TRIGGER (Transact-SQL)
從目前資料庫移除一個或多個 DML、DDL 或登入觸發程序。
Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER schema_name.trigger_name [ ,...n ] [ ; ]
Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER trigger_name [ ,...n ]
ON { DATABASE | ALL SERVER }
[ ; ]
Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER trigger_name [ ,...n ]
ON ALL SERVER
- schema_name
-
這是 DML 觸發程序所屬的結構描述名稱。DML 觸發程序的範圍是建立其資料表或檢視的結構描述。DDL 或登入觸發程序無法指定 schema_name。
- trigger_name
-
這是要移除之觸發程序的名稱。若要查看目前已建立的觸發程序清單,請使用 sys.triggers (Transact-SQL)。
- DATABASE
-
指出將 DDL 觸發程序範圍套用在目前資料庫上。如果建立或修改觸發程序時也指定了 DATABASE,就必須指定 DATABASE。
- ALL SERVER
-
指出將 DDL 或登入觸發程序範圍套用在目前伺服器中。如果建立或修改觸發程序時也指定了 ALL SERVER,就必須指定 ALL SERVER。
您可以卸除 DML 觸發程序,或卸除觸發程序資料表,來移除 DML 觸發程序。當卸除資料表時,也會卸除所有相關聯的觸發程序。
當卸除觸發程序時,會從 sys.objects、sys.triggers 和 sys.sql_modules 目錄檢視中移除觸發程序的相關資訊。
只有在所有觸發程序都是利用相同的 ON 子句來建立時,才能夠每個 DROP TRIGGER 陳述式各卸除多個 DDL 觸發程序。
若要重新命名觸發程序,請使用 DROP TRIGGER 和 CREATE TRIGGER。若要變更觸發程序的定義,請使用 ALTER TRIGGER。
如需有關判斷特定觸發程序相依性的詳細資訊,請參閱<sp_depends (Transact-SQL)>和<sys.sql_dependencies (Transact-SQL)>。
如需有關檢視觸發程序文字的詳細資訊,請參閱<sp_helptext (Transact-SQL)>和<sys.sql_modules (Transact-SQL)>。
如需有關檢視現有觸發程序清單的詳細資訊,請參閱<sys.triggers (Transact-SQL)>和<sys.server_triggers>。
A. 卸除 DML 觸發程序
下列範例會卸除 employee_insupd 觸發程序。
USE AdventureWorks;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
DROP TRIGGER employee_insupd;
GO
B. 卸除 DDL 觸發程序
下列範例會卸除 DDL 觸發程序 safety。
重要事項: |
|---|
| 由於 DDL 觸發程序的範圍並不是結構描述,因此,不會出現在 sys.objects 目錄檢視中,OBJECT_ID 函數無法用來查詢它們是否在資料庫中。範圍不是結構描述的物件必須利用適當的目錄檢視來查詢。如果是 DDL 觸發程序,請使用 sys.triggers。 |
USE AdventureWorks;
GO
IF EXISTS (SELECT * FROM sys.triggers
WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO
參考
ALTER TRIGGER (Transact-SQL)CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.objects (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers
sys.server_trigger_events
sys.server_sql_modules
sys.server_assembly_modules (Transact-SQL)
其他資源
取得有關 DML 觸發程序的資訊取得 DDL 觸發程序的相關資訊

