我创建了两个表inventory和customer_sales。在仓库中工作的个人不能访问customer_sales表。
因此,我在inventory表中添加了一个名为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=sold、2=reserved、3=lost。
更新:我使用的是Microsoft SQL server management studio。我是新手,这是我在学校遇到的一个问题。
发布于 2013-04-11 05:59:24
首先,假设插入的数据有多行。SQL server触发器不逐行操作。YOu需要连接到inserted而不是使用子查询。接下来,如果您希望在insert、update和delete时发生这种情况,那么您需要使用的不仅仅是一个INSert触发器。delete触发器应该使用与inserted和updated不同的公式,因为您将从库存合计中减去删除表中的值。
https://stackoverflow.com/questions/15936559
复制相似问题