mysql - 如何验证今天及以后日期的mysql填写?
问题描述
我正在尝试使用以下代码
alter table Appointment ADD constraint chk_date check( AppointmentDate >= curdate());
但是,它给出了以下错误,指出不允许检查 curdate 函数。- 错误
解决方案
在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
推荐阅读
- php - php how to detect if a round() has been rounded
- javascript - 如何使用 JS 将可见文本动态应用到输入单选按钮
- c# - 将 dataGridView 连接到 SQL 查询
- c - C:如何在不使用 if-else 的情况下调用函数?
- angular6 - 在 Angular 6 中生成没有 *.spec.ts 的组件
- java - 无法加载身份验证插件“caching_sha2_password”
- react-native - React 本机 tabnavigator 图标
- javascript - 如何避免 div 动画形式落后于相对 div?
- java - @OneToMany is not fetching for existing childs
- javascript - 通过 ID 获取 Tweet 信息并显示在链接的网页上 [Node.js]