共用方式為


刪除或停用 DML 觸發程序

此主題描述如何使用 SQL Server Management Studio 或 Transact-SQL 刪除或停用 SQL Server 2012 中的 DML 觸發程序。

本主題內容

  • 開始之前:

    建議

    安全性

  • 若要刪除或停用 DML 觸發程序,使用:

    SQL Server Management Studio

    Transact-SQL

開始之前

建議

  • 刪除觸發程序時,會從目前的資料庫卸除它。 其所依據的資料表和資料不受影響。 刪除資料表時會自動刪除資料表上的所有觸發程序。

  • 觸發程序預設為在建立時啟用。

  • 即使停用觸發程序,也不會將它卸除。 觸發程序仍然是目前資料庫中的一個物件。 不過,當設計此觸發程序的 INSERT、UPDATE 或 DELETE 陳述式執行時,不會引發觸發程序。 已停用的觸發程序可重新啟用。 啟用觸發程序並不會重新建立它。 觸發程序會以當初建立的相同方式引發。

安全性

權限

刪除 DML 觸發程序需要定義觸發程序所在資料表或檢視表的 ALTER 權限。

若要停用或啟用 DML 觸發程序,使用者至少要對建立該觸發程序的資料表或檢視,具備 ALTER 權限。

搭配回到頁首連結使用的箭頭圖示[Top]

使用 SQL Server Management Studio

刪除 DML 觸發程序

  1. [物件總管] 中,連接到 Database Engine 的執行個體,然後展開該執行個體。

  2. 展開您要的資料庫,展開 [資料表],然後展開包含您要刪除之觸發程序的資料表。

  3. 展開 [觸發程序],以滑鼠右鍵按一下要刪除的觸發程序,然後按一下 [刪除]

  4. [刪除物件] 對話方塊中,確認要刪除的觸發程序,然後按一下 [確定]

若要停用和啟用 DML 觸發程序

  1. [物件總管] 中,連接到 Database Engine 的執行個體,然後展開該執行個體。

  2. 展開您要的資料庫,展開 [資料表],然後展開包含您要停用之觸發程序的資料表。

  3. 展開 [觸發程序],以滑鼠右鍵按一下要停用的觸發程序,然後按一下 [停用]

  4. 若要啟用觸發程序,請按一下 [啟用]

搭配回到頁首連結使用的箭頭圖示[Top]

使用 Transact-SQL

刪除 DML 觸發程序

  1. 連接到 Database Engine。

  2. 在標準列中,按一下 [新增查詢]

  3. 將下列範例複製並貼入查詢視窗中。 執行 CREATE TRIGGER 陳述式即可建立 Sales.bonus_reminder 觸發程序。 若要刪除觸發程序,請執行 DROP TRIGGER 陳述式。

--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
    DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE 
AS RAISERROR ('Notify Compensation', 16, 10);
GO

--Delete the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL
   DROP TRIGGER Sales.bonus_reminder;
GO

若要停用和啟用 DML 觸發程序

  1. 連接到 Database Engine。

  2. 在標準列中,按一下 [新增查詢]

  3. 將下列範例複製並貼入查詢視窗中。 執行 CREATE TRIGGER 陳述式即可建立 Sales.bonus_reminder 觸發程序。 若要停用和啟用觸發程序,請分別執行 DISABLE TRIGGERENABLE TRIGGER 陳述式。

--Create the trigger.
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL
    DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE 
AS RAISERROR ('Notify Compensation', 16, 10);
GO

--Disable the trigger.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO

--Enable the trigger.
USE AdventureWorks2012;
GO
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;
GO

搭配回到頁首連結使用的箭頭圖示[Top]

請參閱

參考

ALTER TRIGGER (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

DROP TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules (Transact-SQL)

sys.server_triggers (Transact-SQL)

sys.server_trigger_events (Transact-SQL)

sys.server_sql_modules (Transact-SQL)

sys.server_assembly_modules (Transact-SQL)

概念

取得關於 DML 觸發程序的詳細資訊