MySQL:触发器语法不正确

时间:2016-01-06 18:32:17

标签: mysql triggers

我正在尝试为名为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 ..以防万一

0 个答案:

没有答案