MySQL SQL

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 语句,就可以解决此问题。


转载请指明出处!http://www.miselehe.com/article/view/105