MySQL timestamp自动更新时间

时间:2022-12-29 14:39:11

在mysql中timestamp数据类型是一个比较特殊的数据类型,他可以自动在你不使用程序更新情况下,插入或者修改记录会自动更新timestamp的值。

1.ON UPDATE CURRENT_TIMESTAMP  只有对记录进行修改时才更新为当前时间,插入是不会的

2.default CURRENT_TIMESTAMP  在插入记录时,会添加当前时间,但在修改记录时,不会再更新当前时间

3.default current_timestamp on update CURRENT_TIMESTAMP 在插入或者更新记录时,都会更新当前时间

4.如果default或on update 子句都不写,就等同于 default current_timestamp on update CURRENT_TIMESTAMP


下面以几组代码做例子:


1.ON UPDATE CURRENT_TIMESTAMP

CREATE TABLE record1 (
	id INT PRIMARY KEY,
	name VARCHAR (20) NOT NULL,
	time TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
)
1.1插入后查询
 insert into record1(id,name) values(1,'new titile');

MySQL timestamp自动更新时间

结果:发现插入时,时间不会自动更新进去


1.2修改后查询

update record1 set name="1update the title" where id=1;

MySQL timestamp自动更新时间

结果:修改记录时,会记录时间。


2.default CURRENT_TIMESTAMP 

CREATE TABLE record2 (
	id INT PRIMARY KEY auto_increment,
	name VARCHAR (20) NOT NULL,
	time TIMESTAMP default CURRENT_TIMESTAMP
)
2.1执行上述同样的插入操作,再查询

MySQL timestamp自动更新时间

结果:发现插入时自动记录了时间


2.2执行上述同样的修改操作

MySQL timestamp自动更新时间

结果:发现时间没有更新。


3.default current_timestamp on update CURRENT_TIMESTAMP

CREATE TABLE record3 (
	id INT PRIMARY KEY auto_increment,
	name VARCHAR (20) NOT NULL,
	time TIMESTAMP default current_timestamp on update CURRENT_TIMESTAMP
)
3.1执行上述同样的插入操作

MySQL timestamp自动更新时间
 结果执行上述同样的修改操作插入时自动更新了时间


3.2执行上述同样的修改操作

MySQL timestamp自动更新时间

结果修改时也自动更新了时间



4.default或on update 子句都不写

CREATE TABLE record4 (
	id INT PRIMARY KEY auto_increment,
	name VARCHAR (20) NOT NULL,
	time TIMESTAMP 
)

4.1执行上述同样的插入操作

MySQL timestamp自动更新时间

4.2执行上述同样的删除操作

MySQL timestamp自动更新时间

结果 这里等同于第三种做法