2016-12-01 14 views
1

重複する日付の挿入を防止するトリガーを作成したいと思います。例: 2011年1月3日から2013年5月3日までのオファー "Oferta"がある場合、2016年2月3日から2013年4月3日の日付で新しいオファーを挿入することはできませんまたは2011年4月3日から7/3/2016までトリガーエラーmysql

My SELECTは、私が信じている条件をチェックします。私がしなければならないことは、そのようなことが起こった場合にエラーを出すことです。私は、トリガーに新たなんだとイムは、構文エラーを持つ、私がチェックした構文をトリガが、問題を見つけるcouldntの...

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

あなたのロジックはOKですが、私はあなただけ「であれば」後「し、」条件を逃したと思いますトリガの終了前に 'end if'を指定します。

関連する問題