触发错误mysql

时间:2016-12-01 23:27:39

标签: mysql sql triggers

我想制作一个阻止插入重叠日期的触发器。例如: 如果我在2016年1月3日至2016年5月3日期间收到“Oferta”的优惠,我无法在2016年2月3日至2016年4月3日或4/3期间添加新优惠。 / 2016至2016年7月3日

我的SELECT会检查我相信的情况。我不知道该怎么办是发生错误,如果发生这种情况。我是触发器的新手,我有语法错误,我检查了触发器语法,但无法找到问题......

DELIMITER $$
CREATE TRIGGER tri_check_date_overlap BEFORE INSERT ON Oferta
FOR EACH ROW 
BEGIN 
    IF EXISTS(
        SELECT * FROM Oferta WHERE 
             (new.morada = morada AND new.codigo = codigo 
                AND ((new.data_inicio BETWEEN data_inicio AND data_fim) 
                OR new.data_fim BETWEEN data_inicio AND data_fim)
             )
             )   

            /*CALL raise_application_error(3001, 'Not odd number!'); */
            DECLARE msg varchar(255); 
            set msg = concat('Error: That right is not allowed!', cast(new.right as char));
            signal sqlstate '45000' set message_text = msg;   

END $$
DELIMITER ;

1 个答案:

答案 0 :(得分:0)

你的逻辑是正确的,我认为你错过了'然后'条件是'如果'并且'结束如果'在触发器结束之前。