历史上,在 5.6.5 之前的 MySQL 版本中,有是一项限制,限制表只能有一个 TIMESTAMP 列,其中任一DEFAULT CURRENT_TIMESTAMP 或 ON UPDATE CURRENT_TIMESTAMP 子句。此限制在 2008 年首次引入 INT、BIGINT 和 SMALLINT 整数时就扩展到了它们。
此限制源于遗留实现问题,需要对 CURRENT_TIMESTAMP 功能进行特定实现。
例如,考虑下面的表定义,它尝试定义两个具有 CURRENT_TIMESTAMP 值的 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<br>表定义不正确; <br>只能有一个 TIMESTAMP 列,<br>DEFAULT 或 ON<br>UPDATE 子句UPDATE 子句<p></p>此错误表明表定义违反了上述限制。<h3></h3>解除限制<p></p>尽管有技术基础对于这个限制,MySQL 团队认识到它的不便。随后,在 MySQL 5.6.5(2012 年 4 月 10 日发布)中,取消了该限制。<p></p>本次更新的变更日志指出:<pre class="brush:php;toolbar:false">Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses. In addition, these clauses now can be used with DATETIME column definitions.
以上是在 MySQL 5.6.5 版本之前,使用 CURRENT_TIMESTAMP 与 TIMESTAMP 列有哪些限制?的详细内容。更多信息请关注PHP中文网其他相关文章!