【问题标题】:how to alter table to add new column date with default value of current date?如何更改表以添加具有当前日期默认值的新列日期?
【发布时间】:2016-03-06 03:34:33
【问题描述】:

我对改变感到困惑。

我有一个现有的表register,我想添加一个this_date 列,其默认值为当前日期。可以通过改变吗?好吧,它已经有数据了。

【问题讨论】:

  • 是的,可以使用 Alter Table 添加一列。你遇到了什么问题?

标签: mysql alter-table


【解决方案1】:

应该没问题的。

ALTER TABLE ADD COLUMN this_date DATE DEFAULT CURRENT_DATE;

只要新列可以为空和/或具有默认值,就应该没有问题。

【讨论】:

    【解决方案2】:

    这对我来说在 MySQL 5.7 上是不可能的。每次都给我一个错误。
    我可以使用DATETIME 字段和NOW() 作为默认值,但不能使用CURRENT_DATE

    【讨论】:

      【解决方案3】:

      在 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 
      

      【讨论】:

      • 欢迎来到 SO。默认值的想法是在创建行时应用; when 当然与CURRENT_DATE 绝对相关!如果应用了您的 UPDATE 解决方案,例如在行创建时应用的触发器中。因此,如果您能以这种方式对其进行改进,它可能会变得更加有用。
      • AntoineL,你当然是对的。我做了对我有用的假设,但在其他地方却不行。我会更新我的答案...
      【解决方案4】:

      你也可以选择将列放在哪里,在后面使用关键字:

      ALTER TABLE MyTable ADD `MyColumn` DATETIME AFTER `LastColumn`
      

      【讨论】:

        【解决方案5】:
        ALTER TABLE "TableName" ADD "New_Column_Name" TIMESTAMP DEFAULT now();
        

        【讨论】:

          猜你喜欢
          • 2015-04-21
          • 1970-01-01
          • 2021-03-09
          • 1970-01-01
          • 1970-01-01
          • 2015-04-20
          • 2021-02-21
          • 2011-04-15
          • 2019-09-16
          相关资源
          最近更新 更多