Mysql 默认值不为';不能在集合数据中工作
请帮帮我Mysql 默认值不为';不能在集合数据中工作,mysql,sql,Mysql,Sql,请帮帮我 CREATE TABLE RET (anim SET('dog','pig','voon') DEFAULT 'pig'); 插入: INSERT INTO RET VALUES('root') //empty string! Why? DEFAULT doesn't work! 谢谢。它正常工作。 例如,像这样更改您的模式 CREATE TABLE RET (id int, anim SET('dog','pig','voon') DEFAULT 'pig'); 然后在插入中
CREATE TABLE RET (anim SET('dog','pig','voon') DEFAULT 'pig');
插入:
INSERT INTO RET VALUES('root') //empty string! Why? DEFAULT doesn't work!
谢谢。它正常工作。
例如,像这样更改您的模式
CREATE TABLE RET (id int, anim SET('dog','pig','voon') DEFAULT 'pig');
然后在插入中省略anim
列
INSERT INTO ret (id) VALUES(1);
或者使用默认值
关键字
INSERT INTO ret (id, anim) VALUES(2, DEFAULT);
输出:
| ID | ANIM |
-------------
| 1 | pig |
| 2 | pig |
|ID | ANIM|
-------------
|1 |清管器|
|2 |清管器|
下面是演示,它可以正常工作。
例如,像这样更改您的模式
CREATE TABLE RET (id int, anim SET('dog','pig','voon') DEFAULT 'pig');
然后在插入中省略anim
列
INSERT INTO ret (id) VALUES(1);
或者使用默认值
关键字
INSERT INTO ret (id, anim) VALUES(2, DEFAULT);
输出:
| ID | ANIM |
-------------
| 1 | pig |
| 2 | pig |
|ID | ANIM|
-------------
|1 |清管器|
|2 |清管器|
这里是演示
默认值
不会替换无效值,它只定义了插入中未指定值时要使用的默认值。默认值
不会替换无效值,它只定义了插入中未指定值时要使用的默认值。+1到@peterm的答案,但FWIW这里有两种其他方法可以说明这种行为:
INSERT INTO ret (anim) VALUES (DEFAULT);
INSERT INTO ret () VALUES ();
插入值“root”会导致空字符串而不是默认值的原因是,指定值时默认值不会生效
值“root”不是集合定义中的有效项之一,但在默认行为下,MySQL会“截断”无效值,并插入一个空集合。它会在截断无效值时生成警告,但不会阻止插入
您可以设置严格模式以禁用自动截断。这会将警告变成错误,插入将失败
mysql> SET SQL_MODE=STRICT_ALL_TABLES;
mysql> INSERT INTO RET VALUES('root');
ERROR 1265 (01000): Data truncated for column 'anim' at row 1
+1到@peterm的答案,但FWIW这里有两种其他方法可以说明这种行为:
INSERT INTO ret (anim) VALUES (DEFAULT);
INSERT INTO ret () VALUES ();
插入值“root”会导致空字符串而不是默认值的原因是,指定值时默认值不会生效
值“root”不是集合定义中的有效项之一,但在默认行为下,MySQL会“截断”无效值,并插入一个空集合。它会在截断无效值时生成警告,但不会阻止插入
您可以设置严格模式以禁用自动截断。这会将警告变成错误,插入将失败
mysql> SET SQL_MODE=STRICT_ALL_TABLES;
mysql> INSERT INTO RET VALUES('root');
ERROR 1265 (01000): Data truncated for column 'anim' at row 1
完美答案。谢谢。如果在插入中指定为空,该怎么办?空值是否替换为默认值?@Jorrit
NULL
是一个值,因此将使用它代替默认值。这里拉小提琴:完美答案。谢谢。如果在插入中指定为空,该怎么办?空值是否替换为默认值?@JorritNULL
是一个值,因此将使用它代替默认值。注意:好的评论:“MySQL”截断“无效值”,并插入一个空集。“.Tanks需要您的帮助。好的评论:“MySQL”截断“无效值”,并插入一个空集。“.Tanks需要您的帮助。