MySQL - 如何修改列默认值?

Posted

技术标签:

【中文标题】MySQL - 如何修改列默认值?【英文标题】:MySQL - How to modify column default value? 【发布时间】:2014-01-04 04:59:24 【问题描述】:

如何将列的默认值从无更改为其他值?例如,如果我在创建行时没有指定日期,我希望我的日期具有默认值 0000-00-00。

我在 phpMyAdmin 中理解这一点,但我不确定如何通过命令提示符进行操作。

我也了解如何在添加列时执行此操作。但我所有的专栏都是制作的,其中一些有数据。

ALTER TABLE table1 ADD COLUMN foo INT DEFAULT 0;

通过搜索,我找到了这一行,但我不确定这是否是我想要的?

ALTER TABLE foobar_data MODIFY COLUMN col VARCHAR(255) NOT NULL DEFAULT '';

【问题讨论】:

您之前的列类型是什么? 我正在尝试修改 DATE 和 INT 列。 小心0000-00-00,因为它不在有效的日期范围内。 dev.mysql.com/doc/refman/5.7/en/datetime.html 【参考方案1】:

使用ALTER TABLECHANGEMODIFY 列的DEFAULT 值。检查此链接ALTER TABLE SYNTAX

ALTER TABLE `tableName` CHANGE `columnName` `columnName` DATE DEFAULT '0000-00-00'; 
ALTER TABLE `tableName` MODIFY `columnName` DATE DEFAULT '0000-00-00'; 

【讨论】:

这会将 0000-00-00 应用于我当前没有的所有旧行,还是我需要运行查询来更改这些? @macdonjo 它会将0000-00-00 应用于列中字段为null 的所有行。【参考方案2】:

试试这个

ALTER TABLE foobar_data CHANGE COLUMN col VARCHAR(255) NOT NULL DEFAULT '';

用户更改以更改现有列

见Link

【讨论】:

【参考方案3】:

就我而言,它有效

ALTER TABLE `table_name` CHANGE `col_name` `col_name_again` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'anydefault_text';

希望对你也有帮助。

【讨论】:

以上是关于MySQL - 如何修改列默认值?的主要内容,如果未能解决你的问题,请参考以下文章

MySql怎么给列设置默认值 mysql修改默认值

如何使用默认值修改列的数据类型

如何使mysql在每次修改行操作时自动将列更新为当前时间戳?

Mysql常见约束-创建_修改_表时添加约束 自增长列

如何修改MySql自增列的值

【原】Oracle 如何修改列的数据类型