我正在尝试为我的“Blockbuster-like”电影公司编写一个 sql server 更新触发器。在我的 MOVIES 表中,我有 movie_id 作为 PK 和另一个名为 num_rented 的列,它保留了电影被租用的总次数。这个总数是通过我的插入、删除和更新触发器完成的。(我知道有更好的方法可以做到这一点,但我的任务特别要求这样做,所以请理解这一点)。CUSTOMER_RENTALS 表有 item_rental_id 作为 PK,MOVIES 中的 movie_id 是 FK。
我需要一个更新触发器,只要对 CUSTOMER_RENTALS 进行更新,它就会更新 MOVIES 中的 num_rentals 列。例如,假设输入了 movie_id 1,但这是一个错误,实际上是 movie_id 2。我希望 num_rentals 反映更新。
这是我到目前为止所拥有的,但我真的不知道在 SET 部分中放入什么来实现这一点:
CREATE TRIGGER tr_num_rentals_update
ON customer_rentals
AFTER UPDATE
AS
BEGIN
UPDATE m
SET num_rentals = ??????
FROM movies AS m
INNER JOIN inserted as i on m.movie_id=i.movie_id;
END;
我在想我需要访问已删除表的值以将 num_rental 列恢复到以前的值,但我不知道如何。提前十亿谢谢!