共用方式為


DROP TRIGGER (Transact-SQL)

從目前資料庫移除一個或多個 DML、DDL 或登入觸發程序。

主題連結圖示Transact-SQL 語法慣例

語法

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.objectssys.triggerssys.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>。

權限

若要卸除 DML 觸發程序,需要定義觸發程序的資料表或檢視的 ALTER 權限。

若要卸除以伺服器範圍 (ON ALL SERVER) 定義的 DDL 觸發程序或登入觸發程序,需要伺服器的 CONTROL SERVER 權限。若要卸除以資料庫範圍 (ON DATABASE) 定義的 DDL 觸發程序,需要目前資料庫的 ALTER ANY DATABASE DDL TRIGGER 權限。

範例

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

ms173497.note(zh-tw,SQL.90).gif重要事項:
由於 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 觸發程序的相關資訊

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容
  • 新增有關登入觸發程序的語法和權限,登入觸發程序是 Service Pack 2 加入的新功能。