时间:2021-05-24
在MySQL 5.6.6之前,TIMESTAMP的默认行为:
■TIMESTAMP列如果没有明确声明NULL属性,默认为NOT NULL。(而其他数据类型,如果没有显示声明为NOT NULL,则允许NULL值。)设置TIMESTAMP的列值为NULL,会自动存储为当前timestamp。
■表中的第一个TIMESTAMP列,如果没有声明NULL属性、DEFAULT或者 ON UPDATE,会自动分配 DEFAULT CURRENT_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 CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP属性。
TIMESTAMP 不设置是否为NULL
■声明为NOT NULL且没有默认子句的TIMESTAMP列是没有默认值的。往数据表中插入列,又没有给TIMESTAMP列赋值时,如果是严格SQL模式,会抛出一个错误,如果严格SQL模式没有启用,该列会赋值为'0000-00-00 00:00:00′,同时出现一个警告。(这和MySQL处理其他时间类型数据一样,如DATETIME)
TIMESTAMP 默认设置为NOT NULL
Note:
以上内容和存储引擎选择无关。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、从4.0到4.1的主要变化如果在4.1.0到4.1.3版本的MySQL中创建了包含TIMESTAMP字段的InnoDB表。则在升级到4.1.4及更高时需要重
1.获取mysql镜像?1dockerpullmysql:5.6注意:此处之所以获取mysql5.6是因为mysql5.7在centos7中启动可能会报错2.查
1.安装mysql5.6dockerrunmysql:5.6等所有项目都是Downloadcomplet安装完毕5.6:Pullingfromlibrary/m
在MySQL5.6.6之前,TIMESTAMP的默认行为:TIMESTAMP列如果没有明确声明NULL属性,默认为NOTNULL。(而其他数据类型,如果没有显示
一、MySQL中如何表示当前时间?其实,表达方式还是蛮多的,汇总如下:CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()LOCA