我的理解是MySql忽略CREATE TABLE
语法中的CHECK
。因此我在想 - 为什么不使用触发器呢?
例如,我有一张人员表,其中一个字段是电话号码。是否可以构建一个触发器来验证电话号码是否有效(例如区号),并在电话号码无效的情况下使插入失败并显示适当的错误消息?
最佳答案
是的,您可以创建触发器来验证插入的值并调用未知过程。例如-
CREATE TABLE table1
id INT(11) NOT NULL,
phone VARCHAR(10) DEFAULT NULL,
PRIMARY KEY (id)
);
DELIMITER $$
CREATE trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
IF NOT NEW.phone REGEXP '^[0-9]{3}-[0-9]{2}-[0-9]{2}$' THEN
CALL error; -- Call nonexistent procedure
END IF;
END
$$
DELIMITER ;
关于MySql 表和触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7400445/