mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP的区别及与用户管理的关系
2018-08-13 23:07
399 查看
版权声明:©️Jan Franklin 做不复制黏贴的博客主 https://blog.csdn.net/weixin_42917830/article/details/81638842
开端
近来开发用户管理模块,涉及到了“账户创建”“最后登录”“最后资料更新”这三个时间戳的表达。
发现了mysql字段默认值CURRENT_TIMESTAMP 和
属性 ON UPDATE CURRENT_TIMESTAMP
如何利用这两个特性,完成以上的三个字段的统计呢?
原理
- 多方查阅,发现CURRENT_TIMESTAMP,只适用于该行数据插入INSERT时,插入时,只需要在sql语句中不插入有该默认值的字段,这个字段就会赋值为插入时的时间戳
- ON UPDATE CURRENT_TIMESTAMP则是只适用于该行数据UPDATE更新时,每当该行数据发生了UPDATE操作,有该属性字段就会自动赋值为插入的时间戳
- 假若一个字段默认值CURRENT_TIMESTAMP和属性ON UPDATE CURRENT_TIMESTAMP都同时具备呢?
答案很确定,就是INSERT和UPDATE时,这个字段都会刷新
完成功能
回到开端,我要解决“账户创建”“最后登录”“最后资料更新”这三个时间戳的表达。
- 账户创建:这个时间戳应该|只|在用户数据创建时生成,且之后永不更改,|只|拥有默认值CURRENT_TIMESTAMP最合适不过
- 账户更新:这个时间戳应该|只|在用户数据更新时刷新,且之后永不更改,|只|拥有属性ON UPDATE CURRENT_TIMESTAMP最合适不过
- 账户登录:因为登录不是仅仅是UPDATE和INSERT那么简单,他是要经过程序逻辑(验证等)的,必须在符合条件的UPDATE时,这个字段才能更新。
所以要使用NOW()函数了,如UPDATE usr SET last_login = NOW() WHERE user = 'LYJSpeedX'
NOW()不需要引号哦
阅读更多坚持原创,记录点滴 ©️LYJSpeedX
相关文章推荐
- mysql 5.5与5.6 timestamp 字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的区别
- mysql CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
- 取消MySQL timestamp列默认ON UPDATE CURRENT_TIMESTAMP
- 取消MySQL timestamp列默认ON UPDATE CURRENT_TIMESTAMP
- MySQL 5.6.5之前版本不支持多条DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT TIMESTAMP
- 取消MySQL timestamp列默认ON UPDATE CURRENT_TIMESTAMP
- MySQL CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 详解
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
- 取消MySQL timestamp列默认ON UPDATE CURRENT_TIMESTAMP
- mysql timestamp的两个默认值:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
- mysql中的CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
- Update MySQL timestamp on update
- timestamp的两个属性:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
- there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
- MySQL版本区别5.5与5.7之DEFAULT CURRENT_TIMESTAMP
- timestamp的两个属性:CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP
- there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause