mysql check date constraint (trigger)(mysql 检查日期约束(触发器))
问题描述
很抱歉再次打扰,我在 MySql Maria DB 上是全新的(可能也在触发器上)并希望添加检查功能以确保此表中没有插入过去的日期.我相信Mysql的唯一方法是创建一个触发器.我试图创建一个,但我一直遇到问题.谁能告诉我我在这里做错了什么(也许我需要一杯浓咖啡):
Sorry for disturbing again, I completely new on MySql Maria DB (maybe on trigger as well) and looking to add check function to ensure no past date is inserted in this table. I believe that the only way to do it Mysql is to create a trigger. I have tried to create one and I keep on having problems. Can someone tell me what I am doing wrong here (maybe I need a strong coffee):
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 个分号.
Please that i'm on a terminal. Every time the system sees a semicolon it ends my query. I cannot therefore have 2 semicolons.
感谢您的帮助.我希望我足够清楚......
thanks for your help . I hope im clear enough...
推荐答案
查询前需要更改分隔符:
You need to change delimiter before the query:
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
语句
Also, end your IF
statement before you END
the entire block of code to execute for an event(trigger)
这篇关于mysql 检查日期约束(触发器)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:mysql 检查日期约束(触发器)


基础教程推荐
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01