2015-01-10 55 views
-2

我有一個具有以下屬性表:塗改MySql的空和默認屬性

mysql> desc oc_product; 
+-------------------+---------------+------+-----+---------------------+----------------+ 
| Field    | Type   | Null | Key | Default    | Extra   | 
+-------------------+---------------+------+-----+---------------------+----------------+ 
| date_available | date   | YES |  | NULL    |    | 

我感興趣的物業Null設置爲NODefault0000-00-00

我已經完成了Default - 使用>0000-00-00部分:

ALTER TABLE oc_product CHANGE date_available date_available date DEFAULT '0000-00-00';

但是,我無法改變NullNO

我曾嘗試以下查詢:

ALTER TABLE oc_product CHANGE date_available date_available date NULL NO;

回答

0

在某些數據庫,你可以指定wheter它可以爲空或不添加NULLNOT NULL

ALTER TABLE oc_product MODIFY COLUMN date_available NOT NULL; 

但我相信MySQL你也需要指定整個字段類型,所以它應該是:

ALTER TABLE oc_product MODIFY COLUMN date_available date NOT NULL; 

如果您想要指定(或保留)默認值,您也需要添加。這是MySQL的問題,您必須根據需要指定整個字段定義,而不僅僅是更改。

ALTER TABLE oc_product MODIFY COLUMN date_available date NOT NULL DEFAULT '0000-00-00' 

如果您不需要更改列名稱,則可以使用MODIFY而不是CHANGE。除此之外它們是一樣的。該ALTER TABLE語法和其所有的選項都記錄好,所以你可以看看這裏:

http://dev.mysql.com/doc/refman/5.1/en/alter-table.html 
+0

我只是嘗試這樣做,雖然它確實將'Null'改爲'NO',它似乎將'Default'改回爲'NULL'。 – theGreenCabbage

+0

查看更新(第三條語句)。 – GolezTrol

+0

謝謝您提供豐富的答案。這工作。 – theGreenCabbage

0

更改默認值,並使其可爲空

ALTER TABLE oc_product 
    CHANGE `date_available` `date_available` DATE DEFAULT '0000-00-00 00:00:00' NULL; 
+0

我使用'CHANGE'而不是'MODIFY',因爲那就是我使用的GUI吐出來(sqlYOG) – chiliNUT