分享方式:


刪除或停用 DML 觸發程序

適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

此主題說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中刪除或停用 DML 觸發程序。

本主題內容

開始之前

建議

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

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

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

安全性

權限

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

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

使用 SQL Server Management Studio

刪除 DML 觸發程序

  1. 在 [物件總管] 中,連接到資料庫引擎的執行個體,然後展開該執行個體。

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

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

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

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

  1. 在 [物件總管] 中,連接到資料庫引擎的執行個體,然後展開該執行個體。

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

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

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

使用 TRANSACT-SQL

刪除 DML 觸發程序

  1. 連線至資料庫引擎。

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

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

--Create the trigger.  
USE AdventureWorks2022;  
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 AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

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

  1. 連線至資料庫引擎。

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

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

--Create the trigger.  
USE AdventureWorks2022;  
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 AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

另請參閱

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
取得關於 DML 觸發程序的詳細資訊
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)