1
列
默認爲空值,我已經有一個表,簡化的例子:無法設置
CREATE TABLE t (c INT NOT NULL);
,我需要列缺省值更改爲NULL,所以我嘗試:
ALTER TABLE t ALTER COLUMN c SET DEFAULT NULL;
但我得到錯誤「錯誤代碼:1067。'c'的默認值無效。」 看起來很奇怪,因爲查詢符合官方文檔。
我甚至想:
ALTER TABLE t ALTER COLUMN c DROP DEFAULT;
和之後做一個 'SET DEFAULT NULL' 查詢,但發生了同樣的錯誤。 有趣的是,這樣的查詢:
ALTER TABLE t ALTER COLUMN c SET DEFAULT 1;
執行沒有錯誤。
我知道,這是可以使用列缺省值更改爲NULL在我的情況:
ALTER TABLE t MODIFY COLUMN c INT NULL;
但此查詢是大表很慢(它會非常慢,不是像「SET查詢DEFAULT 1')
那麼,如何將默認值更改爲NULL?
我的意思是,沒有任何由'MODIFY COLUMN'命令引起的開銷。
詳細信息:MySQL x64版本5.7.10,Win8。使用MySQL Workbench進行測試。
您已經創建了表不能爲空列「C」的唯一途徑,所以你不能做它默認爲NULL。沒有將列修改爲Nullable,恐怕你永遠不能將它設置爲NULL ..一旦你設置爲Nullable,當你在這個列中添加一個沒有值的新記錄時,它應該默認爲NULL。 – ydoow