创建和更新时的MySQL CURRENT_TIMESTAMP

kub*_*uba 64 mysql timestamp mysql-error-1293

我想定义将有2个TIMESTAMP字段的表,如下所示:

CREATE TABLE `msgs` (
    `id` INT PRIMARY KEY AUTO_INCREMENT,
    `msg` VARCHAR(256),
    `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
Run Code Online (Sandbox Code Playgroud)

如何做到这一点避免错误:

ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
Run Code Online (Sandbox Code Playgroud)

关键是保持期望的行为ts_create,并ts_update在表模式.

Cle*_*t P 56

这是mySQL的一个限制,你不能有两个TIMESTAMP列,其默认值引用CURRENT_TIMESTAMP.唯一的方法是对ts_create使用DATETIME类型,遗憾的是它不能具有默认值NOW().你可以使用自己的触发器来实现这一目标.

  • MySQL现在支持引用CURRENT_TIMESTAMP的多个TIMESTAMP列(自2012年发布的5.6.5版本以来).http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html (44认同)

avi*_*v p 14

猜猜这是一个老帖子,但实际上我猜mysql在其最新版本的mysql 5.6.25中支持2 TIMESTAMP,这就是我现在使用的内容.


iKi*_*ing 5

我认为可以通过使用以下技术

`ts_create` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`ts_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)


小智 5

您正在使用较旧的MySql版本.将myqsl更新为5.6.5+它将起作用.