我正在为数据库课程建立监狱管理数据库,如果囚犯判刑的开始日期和结束日期不正确,我正在制作一个拒绝插入的触发器。
我知道有更好的方法可以做到这一点,但我需要使用触发器。
这是我提出的问题,我不知道我是否正确使用了SIGNAL功能:
CREATE TRIGGER `Prisoner_Date_Check` BEFORE INSERT ON `Prisoner`
FOR EACH ROW begin
if (new.sentence_end-new.sentence_start) < 0 then
SIGNAL sqlstate '12345'
SET MESSAGE_TEXT = 'Incorrect Prisoner.start_date or Prisoner.end_date';
END IF;
if new.sentence_end < current_date then
SIGNAL sqlstate '12345'
SET MESSAGE_TEXT = 'Incorrect Prisoner.end_date, less than current_date';
END IF;
if new.sentence_start > current_date then
SIGNAL sqlstate '12345'
SET MESSAGE_TEXT = 'Incorrect Prisoner.start_date, greater than current_date';
end if;
END$$
当我运行脚本时,我收到此错误。
Error Code: 1235. This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
答案 0 :(得分:0)
SIGNAL
的这种用法很好。
这里失败的是CREATE TRIGGER
,因为已为同一事件的同一个表定义了另一个触发器。
首先使用DROP TRIGGER
。