改变MySql Null和默认属性

时间:2015-01-10 07:07:24

标签: mysql

我有一个具有以下属性的表:

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

我有兴趣将属性Null设置为NO,将Default设置为0000-00-00

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

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

但是,我无法将Null更改为NO

我尝试了以下查询:

ALTER TABLE oc_product CHANGE date_available date_available date NULL NO;

2 个答案:

答案 0 :(得分:0)

在某些数据库中,您可以通过添加NULLNOT NULL来指定它是否为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

答案 1 :(得分:0)

更改默认值,并使其可以为空

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