错误代码:1422存储函数或触发器中不允许显式或隐式提交。在sp中触发sp时

时间:2016-10-26 19:04:44

标签: mysql stored-procedures database-trigger

我做错了什么?

创建一个触发器,在每次返回电影时自动调用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;

0 个答案:

没有答案