我有一个具有以下属性的表:
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;
答案 0 :(得分:0)
在某些数据库中,您可以通过添加NULL
或NOT 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;