当我使用检查约束时,我无法弄清楚为什么在表中插入负数

时间:2016-03-24 17:57:05

标签: mysql

在MYSQL数据库中创建名为temp的表。(使用WAMP服务器应用程序)

create table `temp`
(
        number int(255) not null check(number > 0)
)
engine=innodb;

在临时表中插入负值

INSERT INTO `temp` VALUES (-1);

但-1插入了,我不知道为什么?这个代码有什么问题吗? Result

3 个答案:

答案 0 :(得分:2)

CHECK 子句被解析但被所有存储引擎忽略。 你最好使用UNSIGNED,它不允许插入任何符号,即只允许正数。

create table `temp`
(
        number int(255) unsigned not null 
)
engine=innodb;

答案 1 :(得分:1)

MySQL不支持检查约束。

它只允许在表创建中用于可移植性支持,但实际上它们会被忽略。

答案 2 :(得分:1)

对于非负面的特殊情况,您可以使用unsigned int类型:

field INT(10) unsigned not null default '0'