我正在尝试为名为classes_tbl
的表编写触发器,我基本上想要检查before update
参与者是否为最大值,如果为真 - 不允许更新,并引发错误信息。
除了在update table
尝试减少数量的情况下检查参与者是否为0,还不能将其降低到0以下 - 并且在这种情况下再次引发错误消息。
我不是100%习惯MySQL,所以我不确定缺少什么或错误。如果有人能给我一个提示,那就太好了。
这是我的创建触发器语法:
DELIMITER //
CREATE TRIGGER MaxBelegt_TRGGR
BEFORE UPDATE ON classes_tbl
FOR EACH ROW
BEGIN
DECLARE
n_count NUMBER(3);
msg varchar(255);
SELECT maxParticipants
INTO n_count
FROM rooms_tbl
WHERE rid = :NEW.rid;
IF :OLD.participants = n_count THEN
set msg = concat('MyTriggerError: MaxParticipants for Room exceeded. On MaxBelegt_TRGGR -> belegtAnz : ', cast(OLD.participants as char));
signal sqlstate '45000' set message_text = msg;
END IF;
IF :NEW.participants < 0 THEN
set msg = concat('MyTriggerError: Participant number already 0. On MaxBelegt_TRGGR -> belegtAnz : ', cast(OLD.participants as char));
signal sqlstate '45000' set message_text = msg;
END IF;
END
//
DELIMITER;
谢谢!
BTW:我使用的是mysql版本:5.6.24 ..以防万一