Поделиться через


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

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

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

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

Ограничения

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

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

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

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

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

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

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

Разрешения

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

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

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

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine и разверните его.

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

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

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

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

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

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

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

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

  1. Установите соединение с компонентом Компонент Database Engine.

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

  3. Скопируйте следующие примеры в запрос. Выполните первый пример, чтобы создать триггер DML, который выводит на клиент определяемое пользователем сообщение, когда пользователь пытается добавить или изменить данные в таблице SalesPersonQuotaHistory . Выполните инструкцию ALTER TRIGGER , чтобы изменить триггер так, чтобы он срабатывал только на операции INSERT . Этот триггер полезен, так как он напоминает пользователям, что при обновлениях и вставках строк в эту таблицу необходимо направить уведомление в отдел Compensation.

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  
  
USE AdventureWorks2012;  
GO  
ALTER TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
AFTER INSERT  
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  

Переименование триггера с помощью инструкций DROP TRIGGER и ALTER TRIGGER

  1. Установите соединение с компонентом Компонент Database Engine.

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

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере инструкции DROP TRIGGER и ALTER TRIGGER используются для переименования триггера Sales.bonus_reminder в Sales.bonus_reminder_2.

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_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_references (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)