Триггер INSERT для обновления поля, которое не равно NULL в той же таблице - PullRequest
1 голос
/ 23 сентября 2011

У меня есть ситуация, когда мне нужно объединить две таблицы продуктов в одну, и мне нужно сохранить оба поля идентификатора. Поле Id - это pk и идентификационный столбец. При вставке я хочу обновить prodId, чтобы он соответствовал идентификатору недавно вставленной строки. Это то, что у меня есть, но я получаю сообщение об ошибке, в котором говорится, что я не могу вставить ноль в ProductId. Что я делаю не так?

ALTER TRIGGER SyncId
    ON Product
FOR INSERT
AS
BEGIN
    DECLARE @ID INT
    SET @ID = (SELECT ID FROM Inserted)
    UPDATE Product SET
        ProdId = @ID
    WHERE
        Id = @ID    
END

1 Ответ

0 голосов
/ 23 сентября 2011

Вы можете создать INSTEAD OF триггер для INSERT.Затем вам придется воссоздать фактическую INSERT логику.Вам может потребоваться просмотр таблицы, чтобы сработал триггер ... Я не помню, сработает ли INSERT внутри триггера или нет и не может проверить его прямо сейчас.

Кроме того, ваш триггер, как написано, будет работать, только если обновляется одна строка.Вы всегда должны писать свои триггеры, чтобы иметь возможность обрабатывать несколько строк в таблицах INSERTED и DELETED.

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