0

我有两个表创建了库存和 customer_sales。在仓库中工作的个人无权访问 customer_sales 表。

因此,我在库存表中添加了一个名为 num_sales 的附加字段。

我想创建一个触发函数,每当添加新客户销售时。它将对应于已售出的特定inventory_item 行而不是整个表。

这就是我到目前为止所拥有的。

ALTER TABLE inventory 
ADD num_sales INT 

UPDATE movies SET num_sales = 0;

ALTER TABLE movies ALTER COLUMN num_rentals INT NOT NULL;

GO
CREATE TRIGGER tr_movies_num_rentals_add
   ON customer_sales FOR INSERT
   AS
   BEGIN
     UPDATE inventory
       SET num_sales = num_sales + (SELECT sale_status_code FROM INSERTED)
       WHERE 1 = (SELECT sale_status_code FROM INSERTED);
   END;

注意:sale_status_code 值:1=已售出,2=保留,3=丢失。

更新:我正在使用 Microsoft SQL 服务器管理工​​作室。我是新手,这是我对学校的一个问题。

4

1 回答 1

0

首先假设插入将有多行。SQL Server 触发器不会逐行操作。您需要加入以插入不使用子查询。接下来,如果您希望在插入、更新和删除时发生这种情况,那么您需要使用的不仅仅是 INSert 触发器。并且删除触发器应该使用与插入和更新不同的公式,因为您将从库存总额中减去已删除表中的值。

于 2013-04-10T21:59:23.727 回答