Изменение или переименование триггеров DML

Применяется к:SQL ServerAzure SQL DatabaseAzure, управляемому экземпляру SQL Azure

В этом разделе описывается изменение или переименование триггера DML в SQL Server с помощью SQL Server Management Studio или Transact-SQL.

В этом разделе

Перед началом

Ограничения

  • Во время переименования триггер должен находиться в текущей базе данных, а новое имя должно удовлетворять правилам для идентификаторов.

Рекомендации

  • Не рекомендуется использовать для переименования триггера хранимую процедуру sp_rename . Изменение любой части имени объекта может разрушить скрипты и хранимые процедуры. При переименовании триггера не изменяется имя соответствующего объекта в определении столбца представления каталога sys.sql_modules . Вместо этого мы рекомендуем удалить триггер и снова создать его.

  • Если изменилось имя объекта, на который ссылается триггер, текст триггера необходимо соответствующим образом изменить. Поэтому перед переименованием объекта вначале отобразите зависимости объекта, чтобы определить, не повлияет ли предлагаемое изменение на работу каких-либо триггеров.

  • Кроме того, триггер DML можно изменить, чтобы зашифровать его определение.

  • Чтобы просмотреть зависимости триггера, можно использовать SQL Server Management Studio или следующие представления функций и каталогов:

Безопасность

Разрешения

Для изменения триггера DML требуется разрешение ALTER в таблице или представлении, в котором определен триггер.

Использование среды SQL Server Management Studio

Изменение триггера DML

  1. В обозревателе объектов подключитесь к экземпляру ядра СУБД, а затем разверните этот экземпляр.

  2. Разверните нужную базу данных, разверните узел Таблицы, а затем разверните таблицу, которая содержит изменяемый триггер.

  3. Разверните узел Триггеры, щелкните правой кнопкой мыши изменяемый триггер и выберите команду Изменить.

  4. Измените триггер и нажмите кнопку Выполнить.

Переименование триггера DML

  1. Удалите триггер , который нужно переименовать.

  2. Повторно создайте триггер, указав новое имя.

Использование Transact-SQL

Изменение триггера с помощью ALTER TRIGGER

  1. Соединитесь с ядром СУБД .

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующие примеры в запрос. Выполните первый пример, чтобы создать триггер DML, который выводит на клиент определяемое пользователем сообщение, когда пользователь пытается добавить или изменить данные в таблице SalesPersonQuotaHistory . Выполните инструкцию 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

  1. Соединитесь с ядром СУБД .

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере инструкции 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)