使用更新触发器

时间:2011-11-14 04:01:03

标签: sql triggers

我一直在尝试使用更新触发器来检查主表中的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 个答案:

答案 0 :(得分:2)

您已插入别名为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

我已更新答案,以反映聊天中讨论的更改。