我有一个InventoryOnHand
表,其中包含Quantity
列。
当InventoryTransaction
记录被插入时,我需要更新Quantity
表中的InventoryOnHand
。
有人可以解释以下内容:
是否应在InventoryOnHand
表或InventoryTransaction
表中创建触发器?我会假设InventoryTransaction
表,因为这是'INSERTED'
在命名触发器时,tablename应该是更新的表还是应用了触发器的实际表?例如:tr_InventoryTransactionIns
以下是我的内容:
CREATE TRIGGER dbo.tr_InventoryTransactionIns
ON dbo.Inventory
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
UPDATE Inventory SET QuantityOnHand = QuantityOnHand + INSERTED.Quantity
END
GO
答案 0 :(得分:2)
您还需要以某种方式链接正在插入的行以及Inventory
表中正在更新的行 - 现在,您正在更新整个 Inventory
表格!
尝试这样的事情:
CREATE TRIGGER dbo.tr_InventoryTransactionIns
ON dbo.InventoryTransaction
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
UPDATE inv
SET QuantityOnHand = QuantityOnHand + INSERTED.Quantity
FROM Inventory inv
INNER JOIN Inserted ins ON inv.InventoryId = ins.InventoryId
END
GO