我是MySql的新手,我正在尝试创建一个存储0到5分的表。 我一直在阅读关于CHECK的约束,但它失败了,它允许我输入大于5的数字。
以下是我的脚本
的示例create table part2(
P2_Q1 int(1)
check (P2_Q1 >= 0 and P2_Q1 < 6), //this is one way I've read
P2_Q2 int(1)
check (P2_Q2 >= 0 and P2_Q2 < 6),
P2_Q3 int(1)
check (P2_Q3 between 0 and 5), //and this is the other way
P2_Q4 int(1)
check (P2_Q4 between 0 and 5)
);
提前感谢我能得到任何帮助!
答案 0 :(得分:1)
您可以在MySQL中定义检查约束,但它没有任何效果。引擎只会忽略您定义的任何内容。它的未来版本可能会受到支持。
但是你可以定义2个触发器,每次更新和插入时都会调用它们。插入触发器:
delimiter |
CREATE TRIGGER `ins_p2` BEFORE INSERT ON `part2`
FOR EACH ROW BEGIN
IF NEW.P2_Q1 not between 0 and 5
and NEW.P2_Q2 not between 0 and 5
and NEW.P2_Q3 not between 0 and 5
and NEW.P2_Q4 not between 0 and 5
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'out of range error';
END IF;
END
|
delimiter ;
你可以为更新做同样的事情。