MySql用户输入限制

时间:2014-06-26 00:18:06

标签: mysql int range constraints

我是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)
);

提前感谢我能得到任何帮助!

1 个答案:

答案 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 ;

你可以为更新做同样的事情。