Изменение или переименование триггеров DML
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр 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
В обозреватель объектов подключитесь к экземпляру ядро СУБД, а затем разверните этот экземпляр.
Разверните нужную базу данных, разверните узел Таблицы, а затем разверните таблицу, которая содержит изменяемый триггер.
Разверните триггеры, щелкните триггер правой кнопкой мыши, чтобы изменить, и нажмите кнопку "Изменить".
Измените триггер и нажмите кнопку "Выполнить".
Переименование триггера DML
- Удалите или отключите триггер DML, который требуется переименовать.
- Создайте новый триггер DML, указав новое имя.
Использование Transact-SQL
Изменение триггера с помощью ALTER TRIGGER
Соединитесь с ядром СУБД .
На стандартной панели выберите пункт Создать запрос.
Скопируйте следующий пример в запрос. Выполните первый пример, чтобы создать триггер 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
Соединитесь с ядром СУБД .
На стандартной панели выберите пункт Создать запрос.
Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере инструкции DROP TRIGGER и CREATE 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)