mysql检查日期约束(触发器)

时间:2016-10-18 21:47:10

标签: mysql mariadb

很抱歉再次感到不安,我在MySql Maria DB上完全是新的(可能还在触发器上)并且希望添加检查功能以确保此表中没有插入过去的日期。 我相信唯一的方法就是创建一个触发器。 我试图创建一个,我一直有问题。有人能告诉我我在这里做错了吗(也许我需要一杯浓咖啡):

CREATE TRIGGER check_date BEFORE INSERT on Event
  FOR EACH ROW 
  BEGIN 
  if new.date <= now() then
  SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Event cannot start in the past     event cannot start now. Choose an ulterior date'
end
end if;

请我在终端上。每次系统看到分号时,它都会结束我的查询。因此,我不能有2个分号。

感谢您的帮助。 我希望我足够清楚......

1 个答案:

答案 0 :(得分:0)

您需要在查询之前更改分隔符:

delimiter //

CREATE TRIGGER check_date BEFORE INSERT on Event
FOR EACH ROW
BEGIN
  IF new.date <= now() THEN
    SIGNAL SQLSTATE '45000' 
    SET MESSAGE_TEXT = 'Event cannot start in the past     event cannot start now. Choose an ulterior date';
  END IF;
END;//

delimiter ;

另外,在IF执行事件(触发器)的整个代码块之前结束END语句