触发更新具有条件的另一个表

时间:2013-07-14 00:20:12

标签: sql sql-server tsql

我是触发器新手 我有两个名为ArefSms和tblSalesProd

的表

我希望在插入后我的触发器更新ArefSms,其中tblSalesProd.SalesID = ArefSms.SalesID 对于这个建议我写下面的代码

USE [ACEDB]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[areftblSalesProd] ON [dbo].[tblSalesProd]
AFTER INSERT
AS
Begin Try
Update ArefSms 
       set
        qt=inserted.ProdQty
        where ArefSms.SalesID=inserted.SalesID



End Try
Begin Catch

End catch

但现在我有错误

Msg 4104, Level 16, State 1, Procedure areftblSalesProd, Line 9
The multi-part identifier "inserted.SalesID" could not be bound.

我该怎么办?

2 个答案:

答案 0 :(得分:3)

您需要在inserted语句中指定update。这是一个表格参考:

Update ArefSms 
    set qt=inserted.ProdQty
    from inserted
    where ArefSms.SalesID=inserted.SalesID;

答案 1 :(得分:1)

从其他表(在本例中为inserted)更新表时,我更喜欢使用JOINs的语法:

UPDATE Aref
SET Aref.qt=inserted.ProdQty
FROM ArefSms Aref
   INNER JOIN inserted ON Aref.SalesID=inserted.SalesID