【发布时间】:2016-03-06 03:34:33
【问题描述】:
我对改变感到困惑。
我有一个现有的表register,我想添加一个this_date 列,其默认值为当前日期。可以通过改变吗?好吧,它已经有数据了。
【问题讨论】:
-
是的,可以使用 Alter Table 添加一列。你遇到了什么问题?
标签: mysql alter-table
我对改变感到困惑。
我有一个现有的表register,我想添加一个this_date 列,其默认值为当前日期。可以通过改变吗?好吧,它已经有数据了。
【问题讨论】:
标签: mysql alter-table
应该没问题的。
ALTER TABLE ADD COLUMN this_date DATE DEFAULT CURRENT_DATE;
只要新列可以为空和/或具有默认值,就应该没有问题。
【讨论】:
这对我来说在 MySQL 5.7 上是不可能的。每次都给我一个错误。
我可以使用DATETIME 字段和NOW() 作为默认值,但不能使用CURRENT_DATE。
【讨论】:
在 MySQL 5.7 上,我没有找到默认使用 CURRENT_DATE 或其同义词的方法。
如果您的应用程序将始终在 INSERT 语句中提供值,并且您只需要一种向现有数据添加非空列然后为现有行设置值的方法,您可以通过为非空行提供固定默认值来解决此问题-null 日期列
ALTER TABLE MyTable ADD COLUMN MyColumn DATE DEFAULT '2020-01-01'
然后将其更新为 CURRENT_DATE
UPDATE MyTable SET MyColumn = CURRENT_DATE
【讨论】:
CURRENT_DATE 绝对相关!如果应用了您的 UPDATE 解决方案,例如在行创建时应用的触发器中。因此,如果您能以这种方式对其进行改进,它可能会变得更加有用。
你也可以选择将列放在哪里,在后面使用关键字:
ALTER TABLE MyTable ADD `MyColumn` DATETIME AFTER `LastColumn`
【讨论】:
ALTER TABLE "TableName" ADD "New_Column_Name" TIMESTAMP DEFAULT now();
【讨论】: