在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');
结果:发现插入时,时间不会自动更新进去
1.2修改后查询
update record1 set name="1update the title" where id=1;
结果:修改记录时,会记录时间。
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执行上述同样的插入操作,再查询
结果:发现插入时自动记录了时间
2.2执行上述同样的修改操作
结果:发现时间没有更新。
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执行上述同样的插入操作
结果:执行上述同样的修改操作插入时自动更新了时间
3.2执行上述同样的修改操作
结果:修改时也自动更新了时间
4.default或on update 子句都不写
CREATE TABLE record4 (
id INT PRIMARY KEY auto_increment,
name VARCHAR (20) NOT NULL,
time TIMESTAMP
)
4.1执行上述同样的插入操作
4.2执行上述同样的删除操作