Mysql 我能';我不明白为什么在我使用check约束时在表中插入了负数

Mysql 我能';我不明白为什么在我使用check约束时在表中插入了负数,mysql,Mysql,在MYSQL数据库中创建名为temp的表。(使用WAMP服务器应用程序) 插入临时表中的负值 INSERT INTO `temp` VALUES (-1); 但是-1被插入了,我不知道为什么??代码有问题吗 MySQL不支持检查约束 它只允许它们在表创建中支持可移植性,但实际上它们被忽略。MySQL不支持检查约束 它只允许它们在表创建中用于可移植性支持,但实际上它们被忽略。对于非负的这种特殊情况,您可以使用unsigned int类型: field INT(10) unsigned not n

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

插入临时表中的负值

INSERT INTO `temp` VALUES (-1);
但是-1被插入了,我不知道为什么??代码有问题吗
MySQL不支持检查约束


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

MySQL不支持检查约束


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

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

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

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

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

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

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

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

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

如果我在表中插入一个负值,则插入“0”来代替它,我不需要它,我想获取错误。你希望它做什么?要获取一条错误消息,该值为负值,不能插入Das@rustam Umarov说,如果您处于严格模式,它将抛出一个错误。使用此方法,如果我在表中插入一个负值,则会插入“0”来代替它,而我不需要它,我想获取错误您希望它做什么?要获取一条错误消息,该值为负值,不能插入Das@rustam Umarov说,如果您处于严格模式,它将抛出一个错误。使用此方法,如果我在表中插入一个负值,则在严格sql模式下插入“0”来代替它,如果您尝试插入一个负数,则会得到一个错误:“error 1264(22003):第1行“number”列的值超出范围”。但是,您永远不会得到一个负数替换为零。使用此方法,如果我在表中插入一个负值,则在严格的sql模式下插入“0”来代替它,如果您尝试插入一个负数,您将得到一个错误,即“error 1264(22003):第1行“number”列的值超出范围”。然而,你永远不会得到一个负数替换为零。