MySql 用户输入的限制

标签: MySQL
发布时间: 2017/1/9 22:49:10
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我新的 MySql,我想创建一个表,将存储从 0 到 5 之间的分数。 我反复读到关于检查约束,但它失败,它让我输入大于 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:

你可以在 MySQL 中定义 check 约束,但它没有任何影响。引擎只是忽略您定义的。它可能在未来版本的 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 ;

你可以做相应更新。

官方微信
官方QQ群
31647020