mySQL -一个列怎么能说YES为NULL,也有另一个默认?



修改表中的列(名为pub_lang),使其具有如下默认值。然而,当我描述这个表时,mySQL说YES为Null,并且也有我输入的默认值(附图)。这怎么可能呢?它不应该自动改变Null为NO,因为我给了它另一个默认值?

ALTER TABLE newbook_master MODIFY COLUMN pub_lang VARCHAR(15) DEFAULT ('English');

输入图片描述

具有默认值的可空列与具有默认值的非空列是有区别的。

不同之处在于,您可能希望显式地将可空列设置为NULL,而不依赖于其默认值。

mysql> create table newbook_master (pub_lang varchar(15) default 'English', pub_lang2 varchar(15) not null default 'English');
Query OK, 0 rows affected (0.01 sec)
mysql> insert into newbook_master () values ();
Query OK, 1 row affected (0.01 sec)
mysql> select * from newbook_master;
+----------+-----------+
| pub_lang | pub_lang2 |
+----------+-----------+
| English  | English   |
+----------+-----------+
1 row in set (0.00 sec)
mysql> insert into newbook_master set pub_lang=NULL, pub_lang2=NULL;
ERROR 1048 (23000): Column 'pub_lang2' cannot be null
mysql> insert into newbook_master set pub_lang=NULL, pub_lang2='French';
Query OK, 1 row affected (0.01 sec)
mysql> select * from newbook_master;
+----------+-----------+
| pub_lang | pub_lang2 |
+----------+-----------+
| English  | English   |
| NULL     | French    |
+----------+-----------+
2 rows in set (0.00 sec)

最新更新