为什么在DEFAULT或ON UPDATE子句中只能有一个带有当前时间戳的TIMESTAMP列?

CREATE TABLE `foo` (
  `ProductID` INT(10) UNSIGNED NOT NULL,
  `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=INNODB;

导致以下结果的错误:

错误代码:1293

表定义不正确;可以

推荐答案

这一限制仅是由于历史和代码遗留原因,在MySQL的最新版本中已被取消:

MySQL 5.6.5的变化(2012-04-10,里程碑8)

以前,每个表最多可以有一个时间戳列

http://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-5.html

Mysql相关问答推荐

mysql查询汇总数据

默认情况下,MariaDB是否限制为本地主机?

亚马逊RDS MySQL-无法';t执行';使用读取锁定刷新表';

在 mySQL 中计算每日数组的每周指标

如何从mysql中的不可用日期范围获取可用日期范围?

如何将多个字符串插入变量

任何值的 SQL WHERE 子句?

MySQL,递归 CTE.它如何以这种句法形式工作?

为什么以及如何将 Django filter-by BooleanField 查询转换为 SQL WHERE 或 WHERE NOT 而不是 1/0?

如何获取从开始时间到结束时间的所有正在运行的作业(job)的总和?

包含 group_contact 的视图的问题

Mysql insert with loop out of select 语句

SUBSTRING_INDEX 获取第 n 个值

使用 MySQL 在树中查找 Leaf

Ansible 幂等 MySQL 安装 Playbook

如何使用 SQL 数据库中的经纬度查找最近的位置?

启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

MySQL:切换 int 字段值的简单方法

如何将本地托管的 MySQL 数据库与 docker 容器连接

MySQL - 重复表