【发布时间】:2022-01-03 17:04:05
【问题描述】:
我对数据库和 SQL 有点陌生,所以我希望能在我的问题上得到一些帮助。我正在尝试在现有表“订单”上添加荷兰邮政编码的验证检查。我要检查的列称为“Zip”varchar(7)。我使用了以下查询,它一直给我一个错误 4025:
ALTER TABLE `order`
ADD CONSTRAINT CK_zip
CHECK (Zip LIKE '[0-9][0-9][0-9][0-9] [a-z][a-z]');
我也尝试为相同的输入字段创建触发器,但这也不起作用。我试图添加的触发器:
DELIMITER //
CREATE TRIGGER valid_zip
BEFORE INSERT ON order
FOR EACH ROW
BEGIN
IF NEW.Zip NOT LIKE '#### [a-z][a-z]' THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'No valid zip';
END IF;
END;
//
DELIMITER ;
我显然做错了什么,但我不知道是什么。我想在应该匹配荷兰邮政编码格式 (0000 XX) 的输入字段上添加验证。所以“1234 AA”和“2897 BC”可以通过,但“44444 A”或“4444AA”不能。谢谢!
引擎:InnoDB
程序:MySQLWorkbench 8.0
【问题讨论】:
标签: sql validation constraints mysql-workbench