mySQL - 一个列如何对 NULL 说 YES 并且还有另一个 DEFAULT?
mySQL - How can a column say YES for NULL and also have another DEFAULT?
我更改了 table 中的一列(称为 pub_lang),使其具有如下默认值。但是,当我描述 table 时,mySQL 对 Null 说是,并且还有我输入的默认值(附图)。这怎么可能?既然我给了它另一个默认值,它不应该自动将 Null 更改为 NO 吗?
ALTER TABLE newbook_master MODIFY COLUMN pub_lang VARCHAR(15) DEFAULT ('English');
enter image description here
具有默认值的可为 null 的列与具有默认值的不可为 null 的列之间存在差异。
不同之处在于您可能希望显式将可空列设置为 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)
我更改了 table 中的一列(称为 pub_lang),使其具有如下默认值。但是,当我描述 table 时,mySQL 对 Null 说是,并且还有我输入的默认值(附图)。这怎么可能?既然我给了它另一个默认值,它不应该自动将 Null 更改为 NO 吗?
ALTER TABLE newbook_master MODIFY COLUMN pub_lang VARCHAR(15) DEFAULT ('English');
enter image description here
具有默认值的可为 null 的列与具有默认值的不可为 null 的列之间存在差异。
不同之处在于您可能希望显式将可空列设置为 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)