Создать триггер в SQL Server - PullRequest
12 голосов
/ 29 июля 2010

Я заблудился, когда хотел создать триггер, используя предопределенный «CREATE TRIGGER» в SQL Server 2008 R2. Не могли бы вы дать мне прямой оператор SQL, который я могу использовать для создания триггера, и подскажите, как определить ПОСЛЕ, ДО и все такое?

Кроме того, как я могу узнать строки UPDATED / INSERTED / DELETED и использовать их значения столбцов для выполнения операций внутри триггера?

Ответы [ 3 ]

11 голосов
/ 29 июля 2010

Основной синтаксис:

CREATE TRIGGER YourTriggerName ON dbo.YourTable
FOR|AFTER INSERT, UPDATE, DELETE
AS
BEGIN
     /*Put what ever you want here*/
     UPDATE AnotherTable
          SET SomeColumn = AnotherColumn
     FROM inserted | deleted
END
GO
3 голосов
/ 29 июля 2010

Базы данных ориентированы на наборы и триггеры не отличаются. Триггер сработает при выполнении данной операции, и эта операция может повлиять на несколько строк. Таким образом, вопрос "Say I want to know the Primary Key of that row" является неправильным. Может быть вставлено несколько строк.

SQL Server предоставляет две специальные таблицы для триггеров AFTER с именами inserted и deleted, которые представляют строки, которые были вставлены или удалены действием, и структурированы идентично затрагиваемой таблице. Триггер обновления может заполнять как inserted, так и deleted, тогда как триггер вставки будет заполнять только таблицу inserted.

Из комментариев:

но получатель электронной почты будет определяться на основе значения во второй таблице, где идентификатор внешнего ключа находится в первой таблице (которая имеет триггер

Ответ на этот вопрос заключается в использовании таблицы inserted (в которой, опять-таки, должно быть несколько строк), чтобы циклически проходить по строкам и отправлять электронную почту. Тем не менее, я бы рекомендовал не включать логику электронной почты в триггер. Вместо этого я бы порекомендовал поместить эту логику в хранимую процедуру и отправить по электронной почте ваше сообщение.

Для справки: Создать триггер

2 голосов
/ 29 июля 2010

Триггер - это процесс, основанный на событиях, который «запускается» после некоторого изменения таблицы. Это будет на УДАЛИТЬ, ОБНОВИТЬ, ВСТАВИТЬ и так далее. Синтаксис BEFORE и AFTER будет определять, следует ли запускать триггер до или после того, как событие зафиксировано.

Это короткая версия. Проверьте MSDN .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...