是否可以在 MySQL 5.7 中自动生成 Unix 毫秒时间戳

Dol*_*hin 3 mysql timestamp default-value

我在 MySQL 5.7 表中创建了一个created_time字段BIGINT,现在我想在插入记录时自动生成一个 Unix 毫秒时间戳。是否有可能做到这一点?我尝试了下面的代码,但失败了:

ALTER TABLE db.video_info MODIFY COLUMN created_time bigint(20) 
  DEFAULT (ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)) NULL;
Run Code Online (Sandbox Code Playgroud)

Bil*_*win 6

MySQL 8.0 支持像你展示的那样的表达式 default。

MySQL 5.7 默认不支持表达式。只有 NULL 或常量值,或者CURRENT_TIMESTAMP它是 DATETIME 或 TIMESTAMP 列。

对于 MySQL 5.7,您有两种选择:

  • 将该列声明为created_time datetime(3) default current_timestamp(3).

  • 像你一样使用 BIGINT,但写一个触发器来设置值。