刪除或停用 DML 觸發程序

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Microsoft Fabric 中的 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 TRIGGER and ENABLE 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