首页 > 解决方案 > 如何验证今天及以后日期的mysql填写?

问题描述

我正在尝试使用以下代码

alter table Appointment ADD constraint chk_date check( AppointmentDate >= curdate());   

但是,它给出了以下错误,指出不允许检查 curdate 函数。- 错误

标签: mysqlsql

解决方案


在CHECK 约束表达式中只能使用确定性函数。您不能创建这样的 CHECK。

使用 BEFORE INSERT 触发器:

CREATE TRIGGER check_AppointmentDate 
BEFORE INSERT
ON Appointment 
FOR EACH ROW
BEGIN
IF NEW.AppointmentDate < CURRENT_DATE THEN
    SIGNAL SQLSTATE '45000' 
           SET MESSAGE_TEXT = 'AppointmentDate cannot be set in the past.';
END IF;
END

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=9bc964fbaab469ec841e62be99db4efd


推荐阅读