`update_time` timestamp NOT NULL
ON UPDATE CURRENT_TIMESTAMP
DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) COMMENT='';
如果使用Navicat建表就是在图绿框中勾选上根据当前时间戳更新
这样设置之后,即使直接通过Navicat工具修改了name字段,那么update_time也会自动更新,除非手动设置了update_time字段
Sequel Pro见下图:
假设表有3个字段:id、name、update_time,希望在新增记录时能自动设置update_time字段为当前时间设置DEFAULT CURRENT_TIMESTAMP即可CREATE TABLE `test` (`id` int NOT NULL,`name` varchar(255),`update_time` timestamp NULL DEFAULT CUR
当插入一条数据,createtime列和updatetime列由数据库获取当前
时
间自动创建
时
间;
当修改一条
记录
时
,updatetime列由数据库获取按当前
时
间
自动更新
时
间。
现在了解了我们的需求、那么我们要怎样去实现它呢?(操作idea编译器的
mysql
图形化界面)
一、建表,设...
TIMESTAMP的变体
1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在创建新
记录
和修改现有
记录
的
时
候都对这个数据列刷新
2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新
记录
的
时
候把这个
字段
设置
为当前
时
间,但以后修改
时
,不再刷新它
3,TIMES
在创建update_time的
时
候,将字段
设置
为timestamp类型,NOT NULL,默认值
设置
为current_timestamp on update current_timestamp
附上Sql语句:`update_time` timestamp NOT NULL DEFAULT current_timestamp on update current_timestamp
主键是id,name是普通索引,mobile是唯一索引,其他是普通字段。
insert ignore
可以实现有数据就忽略,无数据就插入。有数据和无数据是以什么为判断标准?为了彻底搞清楚,我们可以做个实验。
表里面有这些数据:
当insert ignore的数据包含主键的
时
候,只要主键相同,就认为数据存在,插入会失败,验证如下:
当insert ignore的数据包含唯一索引的
时
候,只要唯一索引
当timestamp类型字段(如:update_time),被勾选上“根据当前
时间戳
更新
”后,
每次有其他字段被
更新
时
,该行
记录
的timestamp字段(update_time)都会
自动更新
为当前
时
间。
作为
记录
的
更新
时
间字段:勾选“根据当前
时间戳
更新
”(如:update_time)。
配合的
记录
创建字段:
设置
字段“不为空”,默认值为“CURRENT_TIMESTAMP”(如:create_time)
1> 两者的存储方式不一样
对于TIMESTAMP,它把客户端插入的
时
间从当前
时
区转化为UTC(世界标准
时
间)进行存储。查询
时
,将其又转化为客户端当前
时
区进行返回。
在使用
MySQL
中datetime格式
自动更新
特性
时
,我们应该明确一点,datetime格式
设置
默认值为当前
时
间和
自动更新
时
间是从
MySQL
5.6版本之后开始支持的。此前我们都是使用timestamp格式来实现
自动更新
时
间。
一、下面是datetime与timestamp两者的简单对比
时
间范围
时
间处理
默认值和
自动更新
datetime
'10...