[英]How do I correctly update values with a trigger?
我有一个包含列QtySold_Day
和QtySold_Yesterday
的Products
表,其中分别包含有关今天和昨天的已售产品数量的信息。
我想创建一个触发器,每当尝试更新QtySold_Day
列时,它将每个值从QtySold_Day
列移动到QtySold_Yesterday
。
这是我已经拥有的:
create or alter trigger UpdateQuantity
on Products
instead of update
as
declare @x int
set nocount on
while (@x < @@ROWCOUNT)
begin
update Products
set QtySold_Day = QtySold_Yesterday
where (ProductID = @x)
end
我想知道如何完成触发器以使其按预期工作。
Inserted
的伪表,其中包含更新的新详细信息。 因此,您可以在一个 go 中更新所有相关记录。INSTEAD OF
触发器吗? 因为这将捕获对该表的所有更新,并且在大多数情况下什么都不做。UPDATE Products SET
QtySold_Day = QtySold_Yesterday
WHERE ProductID IN (SELECT ID FROM Inserted)
-- Only update once
AND QtySold_Yesterday IS NULL;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.