■TIMESTAMP列如果没有明确声明NULL属性

在MySQL 5.6.6事先,TIMESTAMP的暗中认可行为:

■TIMESTAMP列若无明了宣称NULL属性,暗中认可为NOT NULL。(而别的数据类型,若无显示注明为NOT NULL,则允许NULL值。卡塔 尔(阿拉伯语:قطر‎设置TIMESTAMP的列值为NULL,会自行积累为近些日子timestamp。■表中的第4个TIMESTAMP列,若无注明NULL属性、DEFAULT也许ON UPDATE,会活动分配 DEFAULT CU福特ExplorerRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP 属性。■表中第一个TIMESTAMP列,若无申明为NULL只怕DEFAULT子句,私下认可自动分配'0000-00-00 00:00:00′。插入行时未有指明改列的值,该列默许分配'0000-00-00 00:00:00′,且从未警告。

2列TIMESTAMP未申明为NULL的暗许行为

从MySQL5.6.6始发这种私下认可设置的方法被废除了。在MySQL启动时会现出以下警报:

[Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (seedocumentation for more details).

关门警示,在my.cnf中参预

[mysqld] explicit_defaults_for_timestamp=true 

重启MySQL后错误消失,那时候TIMESTAMP的一言一动如下:

■TIMESTAMP若无展现证明NOT NULL,是同意NULL值的,能够向来设置改列为NULL,而未有默许填充行为。■TIMESTAMP不会暗中同意分配DEFAULT CULacrosseRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP属性。

TIMESTAMP 不安装是不是为NULL

■证明为NOT NULL且没有私下认可子句的TIMESTAMP列是从未有过暗许值的。往数据表中插入列,又不曾给TIMESTAMP列赋值时,要是是严酷SQL情势,会抛出三个漏洞超级多,假如严苛SQL方式还没启用,该列会赋值为'0000-00-00 00:00:00′,同时现身二个警戒。(那和MySQL管理任几时间项目数据风姿浪漫致,如DATETIME卡塔 尔(阿拉伯语:قطر‎

TIMESTAMP 暗中同意设置为NOT NULL

上述内容和积累引擎接纳非亲非故。

本文由快3平台发布于快3正规平台数据库,转载请注明出处:■TIMESTAMP列如果没有明确声明NULL属性

相关阅读