MySQL数据表timestamp类型自动更新问题
创建数据表:
CREATE TABLE users ( id BIGINT(20) AUTO_INCREMENT PRIMARY KEY COMMENT '主键', userName VARCHAR(200) NOT NULL COMMENT '用户名', create_time TIMESTAMP COMMENT '创建时间' ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;
插入数据:
INSERT INTO users (userName, create_time) VALUES ("name1", NOW());
查询:
更新数据:
UPDATE users SET userName = "name2" WHERE id = "1";
发现创建时间更新了。
实际上创建表时mysql执行create_time字段的定义是:
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
所以在每次更新记录时,创建时间都会更新。
应该在创建表时指定默认值 (DEFAULT CURRENT_TIMESTAMP):
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
这样mysql将不会增加 ON UPDATE 语句,就可以解决此问题。