Сообщение 4104, уровень 16, состояние 1, процедура AddItemToCurrentItems, строка 11 Не удалось связать идентификатор из нескольких частей «INSERTED.IsActive» - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть следующий триггер, написанный для моего приложения, который выдает мне эту ошибку "Msg 4104, Уровень 16, Состояние 1, Процедура AddItemToCurrentItems, Строка 11 Не удалось связать идентификатор из нескольких частей" INSERTED.IsActive "."

Мое намерение с этим триггером состоит в том, чтобы скопировать вставленные данные из таблицы "Item" в таблицу "CurrentItems", но только если битовое поле в таблице Items установлено в True, т. Е. 1. Обе таблицы имеют одинаковую структуру таблицы

CREATE TRIGGER AddItemToCurrentItems 
   ON ITEMS FOR INSERT
--,UPDATE
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here
    IF INSERTED.IsActive = 1
    BEGIN
       INSERT INTO CurrentItems
           SELECT * FROM INSERTED
    END
END

Любые идеи, что я здесь не так делаю.

1 Ответ

1 голос
/ 16 ноября 2009

Вам не хватает ссылки на таблицу INSERTED в вас, если предложение, должно выглядеть примерно так:

IF exists (select * from inserted i where i.IsActive = 1) BEGIN
...

ОБРАТИТЕ ВНИМАНИЕ, однако, что вставленные / обновленные таблицы всегда могут содержать несколько записей, как и любая таблица SQL, поэтому вы должны быть уверены, что ваша логика обрабатывает возможности множественных записей, например, ваша вставка в блок IF должна, вероятно, содержать дополнительный пункт where, что-то вроде этого:

IF exists (select * from inserted i where i.IsActive = 1) 
BEGIN
    INSERT CurrentItems SELECT * FROM INSERTED where IsActive = 1
END

Или, вы можете просто пропустить блок IF и сделать что-то вроде этого:

INSERT CurrentItems SELECT * FROM INSERTED where IsActive = 1

ОБРАТИТЕ ВНИМАНИЕ, что вам, вероятно, следует также рассмотреть возможность включения списка столбцов в операторы вставки и выбора ...

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