修改或重新命名 DML 觸發程序
適用於:SQL Server
Azure SQL Database
Azure SQL 受控執行個體
此主題說明如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中修改或重新命名 DML 觸發程序。
本主題內容
開始之前:
使用下列方法修改或重新命名 DML 觸發程序:
開始之前
限制事項
- 當您重新命名觸發程序時,觸發程序必須位於目前資料庫中,而且新名稱必須遵照 識別碼的規則。
建議
我們建議您不要使用 sp_rename 預存程序重新命名觸發程序。 變更物件名稱的任何部分,可能破壞指令碼和預存程序。 重新命名觸發程序並不會變更 sys.sql_modules 目錄檢視 definition 資料行中對應的物件名稱。 我們建議您先卸除,再重新建立觸發程序。
如果您變更 DML 觸發程序所參考的物件名稱,就必須修改觸發程序以反映新的名稱。 因此,在您重新命名物件之前,請先顯示此物件的相依性,以判斷是否有任何觸發程序受到相關變更的影響。
亦可將 DML 觸發程序的定義修改為加密的形態
若要檢視觸發程序的相依性,您可以使用 SQL Server Management Studio 或下列函數和目錄檢視:
安全性
權限
變更 DML 觸發程序需要定義觸發程序的資料表或檢視表的 ALTER 權限。
使用 SQL Server Management Studio
若要修改 DML 觸發程序
在 [物件總管] 中,連接到資料庫引擎的執行個體,然後展開該執行個體。
展開您要的資料庫,展開 [資料表],然後展開包含您要修改之觸發程序的資料表。
展開 [觸發程序],以滑鼠右鍵按一下要修改的觸發程序,再按一下 [修改]。
修改觸發程序,然後按一下 [執行]。
若要重新命名 DML 觸發程序
使用 TRANSACT-SQL
若要使用 ALTER TRIGGER 修改觸發程序
連線至資料庫引擎。
在標準列中,按一下 [新增查詢] 。
複製下列範例並貼入查詢中。 執行第一個範例,建立當使用者嘗試在
SalesPersonQuotaHistory
資料表中加入或變更資料時,將使用者定義訊息列印到用戶端的 DML 觸發程序。 執行 ALTER TRIGGER 陳述式修改觸發程式,使它只在INSERT
活動上引發。 這個觸發程序很有用,因為它會提醒使用者在這份資料表中更新或插入資料列,以便同時通知Compensation
部門。
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
USE AdventureWorks2022;
GO
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16, 10);
GO
若要使用 DROP TRIGGER 和 ALTER TRIGGER 重新命名觸發程序
連線至資料庫引擎。
在標準列中,按一下 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。 此範例會使用 DROP TRIGGER 和 ALTER TRIGGER 陳述式將
Sales.bonus_reminder
觸發程序重新命名為Sales.bonus_reminder_2
。
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_2
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10);
GO
另請參閱
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (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)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應