我有两个表创建了inventory和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服务器管理工作室。我是新手,这是我上学的问题。
答案 0 :(得分:0)
首先假设插入的将有多行。 SQL Server触发器不会逐行操作。你需要加入插入不使用子查询。接下来,如果您希望在插入,更新和删除时发生这种情况,那么您需要使用多个INSERT触发器。删除触发器应使用与插入和更新不同的公式,因为您将从库存总计中减去已删除表中的值。