在 MySQL 等关系数据库管理系统中,维护临时信息(例如何时创建或更新记录)至关重要用于数据完整性和跟踪更改。 MySQL 提供了 CURRENT_TIMESTAMP 子句来自动使用当前系统时间填充 TIMESTAMP 列。
但是,当尝试定义具有多个 TIMESTAMP 列的表时,每个列都将 CURRENT_TIMESTAMP 作为默认值或更新值,您可能会遇到以下错误:
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
此错误会阻止您创建具有单独创建和更新时间戳所需行为的表
MySQL 的最新版本(例如 MySQL 5.6.25)已解决了此限制。在这些版本中,可以定义多个 TIMESTAMP 列,并将 CURRENT_TIMESTAMP 作为默认值或更新值。
例如,要创建一个包含两个 TIMESTAMP 列 ts_create 和 ts_update 的表,并具有所需的行为:
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 );
此语句将成功创建具有两个 TIMESTAMP 列的表,并且它们的值将自动更新为分别是记录创建和更新时的当前系统时间。
以上是如何在 MySQL 中使用 CURRENT_TIMESTAMP 定义多个 TIMESTAMP 列?的详细内容。更多信息请关注PHP中文网其他相关文章!