在创建表时具有默认值的“创建日期”列

时间:2019-07-08 19:40:31

标签: mysql sql

我希望有一列存储行的创建日期。 我正在使用php和mysql,但我认为这并不重要。

我一直在寻找有关此问题的一系列答案,但它们似乎都是为了更新现有表。当然,我要寻找的是一个问题,因为这是一个非常基本的问题,但我还没有找到。 我已经尝试过使用DEFAULT,CONSTRAINT进行操作,但是一旦添加到我的代码后,它们都不允许我创建表。您可能会觉得我不太精通sql,而且您不会错。

这将创建表格,您能告诉我要添加什么吗?

CREATE TABLE IF NOT EXISTS artwork (
  id_artwork int(4) NOT NULL AUTO_INCREMENT,
  title varchar(50) NOT NULL,
  creationDate DateTime(3),
  CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我尝试以下操作均未成功:

creationDate DateTime(3) DEFAULT GETDATE()
creationDate DateTime(3) DEFAULT (GETDATE())
creationDate DATETIME(3) DEFAULT (CURRENT_TIMESTAMP)

MySQL版本:5.7.23-MySQL社区服务器(GPL)

1 个答案:

答案 0 :(得分:2)

来自MySQL documentation on initialization using DATETIME

  

如果TIMESTAMP或DATETIME列定义在任何地方都包含显式的小数秒精度值,则在整个列定义中必须使用相同的值。

这意味着我们将不得不提高您的精确度。我能够在SQL Fiddle上使用它:

CREATE TABLE IF NOT EXISTS artwork (
  id_artwork int(4) NOT NULL AUTO_INCREMENT,
  title varchar(50) NOT NULL,
  creationDate DateTime(3) DEFAULT CURRENT_TIMESTAMP(3),
  CONSTRAINT PK_artwork PRIMARY KEY (id_artwork)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;