mysql 检查日期约束(触发器)
mysql check date constraint (trigger)
抱歉再次打扰,我在 MySql Maria DB 上是全新的(可能也在触发器上)并希望添加检查功能以确保在此 table 中没有插入过去的日期。
我认为唯一的方法 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 个分号。
感谢您的帮助。
我希望我足够清楚...
您需要在查询前更改分隔符:
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
语句
抱歉再次打扰,我在 MySql Maria DB 上是全新的(可能也在触发器上)并希望添加检查功能以确保在此 table 中没有插入过去的日期。 我认为唯一的方法 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 个分号。
感谢您的帮助。 我希望我足够清楚...
您需要在查询前更改分隔符:
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
语句