我在Mysql數據庫中創建了一個新的新表。 我添加了一個新字段,名爲「rks」,默認爲空,數據類型爲varchar(20)。mysql「默認」列值NULL在執行PRIMARY KEY的alter table時正在被擦除
如果我執行alter table,修改這個字段,我可以看到默認列中的「NULL」被刪除爲空(萬一它是主鍵),但是如果萬一我降級它從主鍵,對這個變量進行修改,保留狀態「NULL」。
請注意:我使用「default null」,而使用alter table如下。
mysql> alter table FileTable modify column rks varchar(40) default NULL collate latin1_bin;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
進一步觀察:
- 如果字段是主鍵,和varchar類型,操作的方式改變 表中刪除NULL。
- 如果字段類型爲bigint,並且主鍵爲 ,則在alter table之後將NULL更改爲0。
我想知道,爲什麼會發生這種變化?
Newly created:
+-------------------------+--------------+-------------------+------+-----+---------+
| Field | Type | Collation | Null | Key | Default |
+-------------------------+--------------+-------------------+------+-----+---------+
| rks | varchar(20) | latin1_bin | YES | PRI | NULL |
+-------------------------+--------------+-------------------+------+-----+---------+
After alter table:
+-------------------------+--------------+-------------------+------+-----+---------+
| Field | Type | Collation | Null | Key | Default |
+-------------------------+--------------+-------------------+------+-----+---------+
| rks | varchar(40) | latin1_bin | NO | PRI | |
+-------------------------+--------------+-------------------+------+-----+---------+
請參閱NULL被擦除時,如果該字段是整數類型,這將更改爲0
感謝您的回答 – kingsmasher1