2015-01-10 54 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