UPDATE Subscription.dbo.RefillSubscriptionHeader AS H
INNER JOIN Subscription.dbo.RefillSubscriptionDetail AS D
ON D.reSubHeaderId = H.reSubHeaderId
SET H.isActive2 = '0', D.isActive = '0'
WHERE reItemID = '56'
在上面的查询中,我尝试加入2个表并更新IsActive
和IsActive2
列。
现在,当我进行SQL语法检查时,我得到了
关键字“AS”附近的语法不正确。
如果我无法更新2个表中的2列,最好的办法是更新H表。
答案 0 :(得分:1)
因为UPDATE语句只会命中一个表,所以最好的选择是
UPDATE H
SET H.isActive2 = '0'
FROM Subscription.dbo.RefillSubscriptionHeader AS H
INNER JOIN Subscription.dbo.RefillSubscriptionDetail AS D
ON D.reSubHeaderId = H.reSubHeaderId
WHERE reItemID = '56'
当然,您可以将两个更新放在一个TRANSACTION
中,如果您提供了正确的TRANSACTION ISOLATION LEVEL,您仍然可以确保操作的“原子性”
答案 1 :(得分:0)
更新语句只能更新一个表/视图。不错的尝试!