【问题标题】:mysql check date constraint (trigger)mysql 检查日期约束(触发器)
【发布时间】:2017-02-28 08:12:18
【问题描述】:

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

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 个分号。

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

【问题讨论】:

    标签: mysql mariadb


    【解决方案1】:

    查询前需要更改分隔符:

    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 ;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 2014-02-01
      • 2015-01-02
      相关资源
      最近更新 更多