mysql explicit_defaults_for_timestamp 参数详解

mysql 中有这样的一个默认行为,如果一行数据中某些列被更新了,如果这一行中有timestamp类型的列,那么么这个timestamp列的数据,也会被自动更新到 更新操作所发生的那个时间点;这个操作是由explicit_defaults_for_timestamp这个变更控制的

mysql> create table t(x int ,y timestamp);  -- 创建一个带有timestamp列的表
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t(x) values(1);  -- 只插x列
Query OK, 1 row affected (0.00 sec)

mysql> select * from t; -- timestamp列会自动更新
+------+---------------------+
| x    | y                   |
+------+---------------------+
|    1 | 2017-06-07 13:48:56 |
+------+---------------------+
row in set (0.00 sec)

mysql> update t set x=2 where x=1; -- update 时timestamp列还是会自动更新
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from t;
+------+---------------------+
| x    | y                   |
+------+---------------------+
|    2 | 2017-06-07 13:49:21 |
+------+---------------------+
row in set (0.00 sec)

explicit_defaults_for_timestamp这个变更设置为on;对于timestamp列的值都要显示指定,那么这一默认行为就算是关闭了。这种关闭只对关闭后创建的表有效,因为此参数已经改变了表结构,参数值的修改不会影响到已创建的表
1、explicit_defaults_for_timestamp=off 时表结构

CREATE TABLE `t` (
  `x` int(11) DEFAULT NULL,
  `y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- `y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE

1、explicit_defaults_for_timestamp=on 时表结构

CREATE TABLE `t6` (
  `x` int(11) DEFAULT NULL,
  `y` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- `y` timestamp NULL DEFAULT NULL
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 持续活在愿景中不断创造人生的价值! 你有愿景吗?你的宗旨和原则是什么?我们要做快乐优势有意义的事! ...
    黄霞田田阅读 664评论 0 2
  • 1.每天运动十分钟。 2.每天一篇简书记录收获,带个图片。 3.每天向家里报个平安。 4.简单,健康快乐每一天。
    想成为一个积极的Raven阅读 153评论 0 0
  • 终于,旧的一年过去了。至少在我所看到的地方,全都是祝贺新年,恭候新年的声音。新年的微信与短信我收到了许多,有朋友发...
    猢狲学社阅读 243评论 0 0
  • 转行成为程序员,让自己的钱能够收益,说什么怎么都是挣钱,只要投资好就行,那是屁话。 把林明樟老师的书输出,学会读财...
    麥克阅读 189评论 0 0
  • 把堇色安年的寓意记录在这里 堇色,淡紫色,即木槿花或薰衣草的颜色. 淡紫色神秘而浪漫,使女性的形象优雅、温柔...
    堇色安年VY阅读 1,990评论 2 14