mysql - 正确的解决方法 - DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列

标签 mysql timestamp mysql-error-1293

我有这张表:

CREATE TABLE IF NOT EXISTS news (
  id int(11) NOT NULL AUTO_INCREMENT,
  data text,
  date_published timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  date_edited timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (id)
);

给我这个错误:

#1293 - Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause.

有关于此问题的旧帖子,但由于当前的数据库结构,我想要一个适当的解决方法。

版本:libmysql - 5.5.41 运行于:5.5.41-ubuntu.14.04.1

最佳答案

这是一个硬限制。最好的办法是让 date_edited 使用 CURRENT_TIMESTAMP 并在应用程序中管理 date_published

date_published timestamp NULL DEFAULT NULL,
date_edited timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

触发器可能是一个替代选项,但我尽量不依赖那些不容易进行版本控制的东西。

关于mysql - 正确的解决方法 - DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656952/

相关文章:

mysql - 如果table1中的table2 id不为空,如何连接到table2

php - 数据表自动刷新正在更改表的 CSS

MySQL插入相同的行

mysql - 为什么 MySQL 不让我删除属性 "on update CURRENT_TIMESTAMP"?

mysql - 如何让 SQL 正确更新我的记录修改时间戳?

mysql - 在 MySQL 4.0 中同时具有 Created 和 Last Updated 时间戳列

java - 在Java中执行.sql脚本时,我可以获得受影响的行数吗?

php - JavaScript 到 PHP 时间戳失败,时间增加了大约一个半月

python - 如何获得干净的YouTube成绩单

MYSQL 查询不允许时间戳列具有同一日期的两个值