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

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

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

  • Для изменения или переименования триггера DML используется:

    Среда SQL Server Management Studio

    Transact-SQL

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

Ограничения

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

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

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

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

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

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

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

Разрешения

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

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

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

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

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

Использование 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

Значок стрелки, используемый со ссылкой «В начало»[Top]

См. также

Справочник

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)

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)

Основные понятия

Получение сведений о триггерах DML