Создайте триггер в SQL Server

Я заблудился, когда я хотел создать триггер с помощью предопределенного "CREATE TRIGGER" SQL Server 2008 R2. Вы могли дать мне прямой SQL-оператор, который я могу использовать, чтобы создать триггер и сказать мне, как определить ПОСЛЕ, ПРЕЖДЕ, и все это?

Кроме того, как я могу знать строки, ОБНОВЛЕННЫЕ/ВСТАВЛЕННЫЕ/УДАЛЕННЫЕ, и использовать их значения столбцов, чтобы сделать операции в триггере?

12
задан Marta 9 November 2011 в 10:36
поделиться

3 ответа

Базы данных ориентированы на наборы, и триггеры ничем не отличаются. Триггер срабатывает, когда выполняется заданная операция, и эта операция может повлиять на несколько строк. Таким образом, вопрос «Скажем, я хочу узнать первичный ключ этой строки» неверен. Может быть вставлено несколько строк.

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

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

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

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

Для справки: Create Trigger

3
ответ дан 2 December 2019 в 20:15
поделиться

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

Это краткая версия. Ознакомьтесь с MSDN .

2
ответ дан 2 December 2019 в 20:15
поделиться

Базовый синтаксис -

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
11
ответ дан 2 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: