2011-11-14 182 views
1

我一直在嘗試使用更新觸發器來檢查主表中的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 

同樣的錯誤。因此,可以ü請幫助我解決這個成功更新數據庫中列..

回答

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 

我已更新答案以反映聊天中討論的更改。

+0

不...還是一樣的錯誤.. – user838359

+0

對不起,第一次沒仔細看。我更新了我的查詢。你需要加入插入(可能標題)表到你的更新聲明,以帶來數據 –

+0

沒有..仍然是相同的錯誤 – user838359