创建更新触发器

时间:2010-08-02 14:38:55

标签: sql-server

我有两个表的SQL Server 2008数据库。第一个表称为Shelf。第二个表称为Product。每个产品都属于一个货架。基于此,我有一个表结构,如下所示:

**Product**
ID (int)
ShelfID (int)
Description (text)

**Shelf**
ID (int)
AisleNumber (int)
TotalProducts (int)

插入或删除产品时,我需要更新相关工具架中的“TotalProducts”值。试图尝试这个,我正在使用触发器。但是,我并不完全了解触发器的工作原理。有人可以告诉我如何实现这一目标吗?

谢谢

1 个答案:

答案 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