Sql 尝试在插入时创建触发器时出现多部分标识符错误

Sql 尝试在插入时创建触发器时出现多部分标识符错误,sql,sql-server,triggers,sql-server-2012,sql-insert,Sql,Sql Server,Triggers,Sql Server 2012,Sql Insert,每当一个新行插入到另一个表中时,我都会尝试更新一个表 当一行添加到storeRoutes表中时,我希望此触发器更新我的productList表中的一列。它应该使用插入到storeRoutes的新行中的storeProductId列,将列isAvailable设置为0(false) 这是我的扳机: CREATE TRIGGER [setIsAvailableFalse] ON [storeRoutes] AFTER INSERT AS BEGIN SET

每当一个新行插入到另一个表中时,我都会尝试更新一个表

当一行添加到
storeRoutes
表中时,我希望此触发器更新我的
productList
表中的一列。它应该使用插入到
storeRoutes
的新行中的
storeProductId
列,将列
isAvailable
设置为0(false)

这是我的扳机:

CREATE TRIGGER [setIsAvailableFalse]
    ON [storeRoutes]    
    AFTER INSERT
    AS  BEGIN

    SET NOCOUNT ON;     

    UPDATE productList
    SET isAvailable = 0     
    WHERE productId = Inserted.storeProductId

END
但我不断地得到一个错误:

无法绑定多部分标识符“Inserted.storeProductId”

我做错了什么


谢谢

您需要从伪表
插入的
中选择

UPDATE pl 
SET isAvailable = 0     
FROM productList pl
INNER JOIN Inserted i ON pl.productId = i.storeProductId
您还可以使用
exists

UPDATE pl 
SET isAvailable = 0     
FROM productList pl
WHERE EXISTS (SELECT 1 FROM Inserted i WHERE  pl.productId = i.storeProductId)

为什么不使用
默认值
约束?嗨,谢谢!您建议的第一个解决方案出现了一个错误…
位置附近的语法不正确
,但我只是复制并粘贴了您所写的内容。所有的表名和列名都是正确的。谢谢,我从SQL Server收到一条警告,
即将执行一条更新语句,但没有WHERE
@SkyeBoniwell:这只是一条警告。连接确保只有相关的行得到更新,因此无需担心。