一条记录一般会有创建时间跟更新时间
创建时间为第一次写数据时填入,更新时间则记录数据的最后修改时间
我们在数据库设置了唯一索引,想基于唯一索引来批量插入更新数据,一般可以用replace 或者 ON DUPLICATE KEY
replace的原理是先根据唯一索引检查有无数据,没有的插入,有的先删除旧的记录,然后再插入新数据。原记录的数据无法保留
ON DUPLICATE KEY在已有数据的情况下,可以选择性的更新字段 ,可保留某些字段值 如create_time。
CURRENT_TIMESTAMP ,设置字段获取当前的系统时间,但是一个表只允许设置一个。
如下这种设置是不会同时生效的
CREATE TABLE aaa(
create_time
datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
update_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘更新时间’);
有两种解决方式:
方式一:ON DUPLICATE KEY UPDATE 时写入更新时间
方式二:网上找到一种解决方式
CREATE TABLE bbb
(
create_time
TIMESTAMP NOT NULL DEFAULT 0,
update_time
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ;