2016-12-01 1 views
1

Я хочу создать триггер, который предотвращает вставку совпадающих дат. Например: Если у меня есть предложение «Oferta» с датой с 1/3/2016 по 3/3/2016, я не могу вставить новое предложение с датой 2/3/2016 по 4/3/2016 или 4/3/2016 по 7/3/2016Ошибки триггера mysql

My SELECT проверяет, в каком состоянии я верю. То, что я не знаю, как это сделать, - это сделать ошибку, если это произойдет. Я новичок в триггеры и Im имея синтаксических ошибок, я проверил синтаксис триггеров, но не смог найти проблему ...

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 ; 

ответ

0

Ваша логика в порядке, я думаю, вы просто пропустили «затем» состояние после того, как «если» и «end if» до конца триггера.