我正在尝试创建一个触发器,一旦表中达到特定值,该触发器就会执行回滚事务。
想象一下,大学图书馆的学生只能同时拥有 5 个有效借阅。我将如何实现这种触发器?
这是我们目前所拥有的:
CREATE DEFINER = CURRENT_USER TRIGGER `bib_db`.`Customer_AFTER_UPDATE` AFTER UPDATE ON `Customer` FOR EACH ROW
if activeloans <5
AND Customertype = student
then
SIGNAL sqlstate '45001' set message_text = "You've reached your maximum ammount of loans";
ROLLBACK TRANSACTION
end if ;
end
我可能离题很远,但这就是我所能得到的......有人有什么想法吗?
最佳答案
有两件重要的事情。首先,您应该使用 before
更新触发器来防止更新发生。第二,逻辑倒退。更像是:
DELIMITER //
CREATE DEFINER = CURRENT_USER TRIGGER bib_db.Customer_BEFORE_UPDATE
BEFORE UPDATE ON `Customer`
FOR EACH ROW
BEGIN
if activeloans >= 5 AND Customertype = 'student' then
SIGNAL sqlstate '45001' set message_text = "You've reached your maximum ammount of loans";
end if ;
END;
DELIMITER ;
结束
关于mysql - 创建允许的最大值触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28583925/