我有两个表的SQL Server 2008数据库。第一个表称为Shelf。第二个表称为Product。每个产品都属于一个货架。基于此,我有一个表结构,如下所示:
**Product**
ID (int)
ShelfID (int)
Description (text)
**Shelf**
ID (int)
AisleNumber (int)
TotalProducts (int)
插入或删除产品时,我需要更新相关工具架中的“TotalProducts”值。试图尝试这个,我正在使用触发器。但是,我并不完全了解触发器的工作原理。有人可以告诉我如何实现这一目标吗?
谢谢
答案 0 :(得分:2)
当您插入或更新产品时,您需要确定哪些ShelfID会受到影响。这是下面的INSERTED
参考。然后,您需要计算这些ShelfID的产品数量(JOIN / COUNT位)并更新Shelf
表。
你也需要DELETE的东西:只需引用特殊的DELETED
表
这将作为INSERT / DELETE语句
的一部分运行CREATE TRIGGER TRG_Product_I On product FOR INSERT
AS
SET NOCOUNT ON
UPDATE
S
SET
TotalProducts = foo.NewTotalProducts
FROM
Shelf S
JOIN
(SELECT
ShelfID, COUNT(*) AS NewTotalProducts
FROM
INSERTED I
JOIN
product P ON I.ShelfID = P.ShelfID
GROUP BY
ShelfID
) foo ON S.ShelfID = foo.ShelfID