Php mysql列用于插入,另一列用于更新

Php mysql列用于插入,另一列用于更新,php,mysql,sql,Php,Mysql,Sql,我正在尝试创建一个具有两个时间戳列的表,一个用于创建行时,另一个用于更新行时。以下是我迄今为止所做的尝试: CREATE TABLE `tmp` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `created` timestamp NOT NULL , `modified` timestamp NOT NULL DEFAULT CU

我正在尝试创建一个具有两个时间戳列的表,一个用于创建行时,另一个用于更新行时。以下是我迄今为止所做的尝试:

CREATE TABLE `tmp` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
   `created` timestamp NOT NULL ,
   `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
但我得到了一个错误:

表定义不正确;在DEFAULT或ON UPDATE子句中,只有一个TIMESTAMP列具有当前的_TIMESTAMP


这是一个MYSQL约束,您只能有一个默认值为systime的列

这个问题也可以参考

您可以编写一个触发器,分别在insert上添加创建的
时间戳

delimiter |
CREATE TRIGGER add_created_ts BEFORE INSERT on `tmp`
FOR EACH ROW
BEGIN
   SET NEW.created = current_timestamp;
END
|
delimiter ;

您可以在MySQL 5.6中实现这一点(在编写本文时可用,但尚未准备好生产)

从MySQL 5.6.5开始,时间戳和日期时间列可以自动初始化并更新为当前日期和时间(即当前时间戳)。在5.6.5之前,这仅适用于时间戳,并且每个表最多有一个时间戳列。。。。对于表中的任何时间戳或日期时间列,可以将当前时间戳指定为默认值、自动更新值或两者

  • 取自

那么还有其他方法来实现这一点吗?表的任何更改都会更新时间戳。它们不区分插入查询和更新查询。如果允许的话,这两个字段都将具有相同的时间戳值