используя триггер обновления - PullRequest
1 голос
/ 14 ноября 2011

Я пытался использовать триггер обновления, который проверяет title_id в основной таблице. Вот что я сделал:

ALTER TRIGGER [dbo].[EX6] on [dbo].[sales]
   INSTEAD OF UPDATE NOT FOR REPLICATION
AS
BEGIN 
   IF EXISTS(SELECT S.title_id 
             FROM inserted S
             INNER JOIN Titles T On T.title_id = S.title_id)
   BEGIN 
      UPDATE Sales 
      SET sales.stor_id = inserted.stor_id
         , sales.ord_num = inserted.ord_num
         , sales.title_id = inserted.title_id
          , sales.ord_order = inserted.ord_order,
         ,sales.qty = inserted.qty
   END

Однако, когда я выполняю это, я получаю следующие ошибки:

     the multi-part identifier inserted.stor_id could not be bound

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

1 Ответ

2 голосов
/ 14 ноября 2011

Вы добавили псевдоним как S, поэтому вам нужно будет продолжить это в вашем UPDATE утверждении

ALTER TRIGGER [dbo].[EX6] on [dbo].[sales]
   INSTEAD OF UPDATE NOT FOR REPLICATION
AS
BEGIN 
   IF EXISTS(SELECT S.title_id 
             FROM inserted S
             INNER JOIN Titles T On T.title_id = S.title_id)
   BEGIN 
      UPDATE st
      SET st.stor_id = S.stor_id
         , st.ord_num = S.ord_num
         , st.title_id = S.title_id
         , st.ord_order = S.ord_order
         , st.qty = S.qty
      FROM Sales AS st
      INNER JOIN inserted S ON st.stor_id = S.stor_id
   END

Я обновил ответ, чтобы отразить изменения, обсуждаемые в чате.

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