Изменение или переименование триггеров DML
В этом разделе описывается изменение или переименование триггера DML в SQL Server 2014 с помощью SQL Server Management Studio или Transact-SQL.
В этом разделе
Перед началом работы
Для изменения или переименования триггера DML используется:
Перед началом
Ограничения
- Во время переименования триггер должен находиться в текущей базе данных, а новое имя должно удовлетворять правилам для идентификаторов.
Рекомендации
Не рекомендуется использовать для переименования триггера хранимую процедуру sp_rename . Изменение любой части имени объекта может разрушить скрипты и хранимые процедуры. При переименовании триггера не изменяется имя соответствующего объекта в определении столбца представления каталога sys.sql_modules . Вместо этого мы рекомендуем удалить триггер и снова создать его.
Если изменилось имя объекта, на который ссылается триггер, текст триггера необходимо соответствующим образом изменить. Поэтому перед переименованием объекта вначале отобразите зависимости объекта, чтобы определить, не повлияет ли предлагаемое изменение на работу каких-либо триггеров.
Кроме того, триггер DML можно изменить, чтобы зашифровать его определение.
Для просмотра зависимостей триггера можно использовать среду SQL Server Management Studio или следующую функцию и представления каталога:
Безопасность
Разрешения
Для изменения триггера DML требуется разрешение ALTER в таблице или представлении, в котором определен триггер.
Использование среды SQL Server Management Studio
Изменение триггера DML
В обозревателе объектовподключитесь к экземпляру компонента Компонент Database Engine и разверните его.
Разверните нужную базу данных, разверните узел Таблицы, а затем разверните таблицу, которая содержит изменяемый триггер.
Разверните узел Триггеры, щелкните правой кнопкой мыши изменяемый триггер и выберите команду Изменить.
Измените триггер и нажмите кнопку Выполнить.
Переименование триггера DML
Удалите триггер , который нужно переименовать.
Повторно создайте триггер, указав новое имя.
Использование Transact-SQL
Изменение триггера с помощью ALTER TRIGGER
Установите соединение с компонентом Компонент Database Engine.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующие примеры в запрос. Выполните первый пример, чтобы создать триггер 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
Установите соединение с компонентом Компонент Database Engine.
На панели «Стандартная» нажмите Создать запрос.
Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере инструкции 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)