При вставке триггера для MS SQL Server - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу вставить данные в мою таблицу sn при вставке данных в NFI - я добавил ниже триггер в свою базу данных, но данные не вставляются в sn при вставке в NFI.

Что мне нужно изменить, чтобы он успешно работал?

CREATE TRIGGER UpdateData ON nfi
FOR INSERT
AS

INSERT INTO SN
        (esn,ern)
    SELECT
        esn,ern
        FROM inserted
        where esn not in (select esn from nfi)

go

1 Ответ

0 голосов
/ 21 февраля 2019

Когда срабатывает триггер, данные уже присутствуют в таблице nfi.Предложение where esn not in (select esn from nfi) гарантирует, что ничего не будет вставлено в sn.

Когда вы создаете триггер и явно не указываете AFTER или INSTEAD OF, тогда AFTER является значением по умолчанию.Из документации CREATE TRIGGER вы можете прочитать:

FOR |AFTER AFTER указывает, что триггер DML срабатывает только тогда, когда все операции, указанные в операторе SQL запуска, были успешно запущены.Все ссылочные каскадные действия и проверки ограничений также должны быть выполнены до того, как сработает этот триггер.

AFTER - значение по умолчанию, когда FOR - единственное указанное ключевое слово.

...