我做错了什么?
创建一个触发器,在每次返回电影时自动调用payFees过程。
您必须决定如何命名触发器,何时触发它以及触发它的表:
DROP TRIGGER trig_pay_fee;
DELIMITER //
CREATE TRIGGER trig_pay_fee AFTER
UPDATE ON rental
FOR EACH ROW
BEGIN
CALL payFees(new.rental_id);
END//
DELIMITER ;
CALL returnFilm(1216);
创建一个存储过程payFees,记录任何逾期的付款 回归电影时的费用。该公司每天收费1欧元,电影已逾期。 您的过程应更新付款表中的行 与他们有关的电影加上每天逾期1欧元的电影。
USE sakila;
DROP PROCEDURE IF EXISTS payFees;
DELIMITER //
CREATE PROCEDURE payFees(IN r_id INT)
BEGIN
IF daysOverdue(r_id) > 100
THEN ALTER TABLE payment
MODIFY COLUMN amount DECIMAL(10, 2);
END IF;
UPDATE payment
SET amount = daysOverdue(r_id) * 1
WHERE rental_id = r_id;
END//
DELIMITER ;
CALL payFees(126);
SELECT *
FROM payment
WHERE rental_id = 126;