MySQL,多个timestamp字段的建表语句建表失败

我使用的MySQL版本为5.7.42

SELECT VERSION();

 

建表语句示例

CREATE TABLE Orders (
  order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
  a_time TIMESTAMP,
  b_time TIMESTAMP
) COMMENT='订单表,用于存储订单信息';

 

报错为:Invalid default value for 'b_time',意即第二个timestamp字段,b_time字段拥有了非法的默认值。

 

当我尝试以下建表语句

CREATE TABLE Orders (
  order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
  a_time TIMESTAMP
) COMMENT='订单表,用于存储订单信息';

可以建表成功,但是发现a_time虽然没有在建表语句中有任何显式定义其默认值,但是建好的表可以看到该字段有默认值 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

由此可知,如果建表语句包含多个timestamp字段,且未显式指定其默认值的时候,MySQL会对所有timestamp字段设定默认值DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,为了避免报错,我采取了以下方式成功建表

CREATE TABLE Orders (
  order_id BIGINT PRIMARY KEY COMMENT '订单唯一标识符,主键',
  a_time TIMESTAMP NULL DEFAULT NULL,
  b_time TIMESTAMP NULL DEFAULT NULL,
  c_time TIMESTAMP NULL DEFAULT NULL 
) COMMENT='订单表,用于存储订单信息';

 

posted @ 2024-10-11 15:21  Ashe|||^_^  阅读(68)  评论(0)    收藏  举报