MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数

MySQL是一种关系型数据库管理系统,其中TIMESTAMP是一种常用的时间类型。在MySQL 5.6版本中,TIMESTAMP类型的行为有一些变化,并且引入了新的explicit_defaults_for_timestamp参数来控制TIMESTAMP的默认值。下文将详细讲解这一过程。

理解TIMESTAMP类型

在MySQL中,TIMESTAMP是一种时间类型,可以使用标准日期、时间格式插入数据。它占用4个字节,并且存储时区无关。

TIMESTAMP类型在MySQL 5.6版本中有一些改变。在之前的版本中,TIMESTAMP类型默认情况下会使用当前时间作为默认值。但是,在MySQL 5.6版本中,TIMESTAMP类型的默认行为变成了使用0作为默认值。

举例来说,以下的SQL语句在MySQL 5.6以下版本中会将time字段设置为当前时间,但是在MySQL 5.6版本中,time字段会被设置为0:

CREATE TABLE example (
    id INT(11) NOT NULL AUTO_INCREMENT,
    time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

使用 explicit_defaults_for_timestamp 参数

为了控制MySQL中TIMESTAMP类型的默认行为,MySQL 5.6版本引入了新的explicit_defaults_for_timestamp参数。该参数默认情况下被设置为OFF,即使用0作为默认值。

以下是如何将explicit_defaults_for_timestamp参数设置为ON的示例:

mysql> SET @@explicit_defaults_for_timestamp = ON;
Query OK, 0 rows affected (0.00 sec)

现在,如果我们创建一个新表并向其中插入数据,时间字段将会显示当前时间而不是0。以下是如何使用explicit_defaults_for_timestamp参数创建一个表的示例:

CREATE TABLE example (
    id INT(11) NOT NULL AUTO_INCREMENT,
    time TIMESTAMP NOT NULL,
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
  ROW_FORMAT=DYNAMIC
  @@explicit_defaults_for_timestamp = ON;

注意,我们需要在CREATE TABLE语句的结尾添加 @@explicit_defaults_for_timestamp = ON; 部分,以明确指定该表需要使用该参数。

总结

在MySQL 5.6版本中,TIMESTAMP类型的默认行为发生了变化,它现在使用0作为默认值。要修改该行为,可以使用新的explicit_defaults_for_timestamp参数来控制。此外,我们还演示了如何在表创建时启用该参数的方法。该参数的默认值为OFF,因此需要明确设置为ON才能生效。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 5.6 中的 TIMESTAMP 和 explicit_defaults_for_timestamp 参数 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • python实现的MySQL增删改查操作实例小结

    针对“python实现的MySQL增删改查操作实例”的完整攻略,我将分别从以下几方面进行说明: 环境搭建:介绍需要安装哪些工具以及如何配置环境; 数据库操作:详细讲解如何利用 python 去操作 MySql 数据库,包括增删改查; 示例演示:提供两个实例演示如何用 python 进行数据操作。 环境搭建 在进行 Python 操作 MySql 数据库之前,…

    database 2023年5月22日
    00
  • mybatis 查询sql中in条件用法详解(foreach)

    下面是mybatis中查询sql中in条件用法详解(foreach)的完整攻略。 1. 前言 在mybatis中,查询sql中经常需要使用到in条件,例如查询一个列表中某些id所对应的信息。mybatis提供了使用foreach标签来实现in条件的查询。 2. 使用foreach标签的in条件查询 下面介绍foreach标签在in条件查询中的用法: 2.1 …

    database 2023年5月21日
    00
  • Oracle阻塞(blockingblocked)实例详解

    Oracle阻塞(blocking)实例详解 什么是Oracle阻塞(blocking)? Oracle阻塞(blocking)是指一个事务锁定了资源(如行或表),该资源无法被其他事务访问,而其他事务需要等待该资源的释放。这个等待的状态被称为阻塞(blocking)。 在Oracle数据库中,产生阻塞的原因有很多,如表锁、行锁、DDL操作等。当出现阻塞时,需…

    database 2023年5月21日
    00
  • PouchDB 和 MongoDB 的区别

    PouchDB 和 MongoDB 都是流行的 NoSQL 数据库,但是它们有不同的用途和功能。下面我们详细讲解它们的区别。 1. 数据存储方式 MongoDB 是一个传统的服务器端数据库,它使用纯粹的基于磁盘的存储方式,即将数据写入硬盘中的文件中。MongoDB 核心的思想是将数据存储在集合(Collections)中,这些集合可以通过索引来查找。Mong…

    database 2023年3月27日
    00
  • 详解MySQL IN和NOT IN使用方法

    MySQL IN和NOT IN是用于在查询中过滤结果的操作符,它们可以用于WHERE子句中。其中,IN操作符用于查询满足指定条件的记录,而NOT IN操作符用于查询不满足指定条件的记录。 下面分别对IN和NOT IN的使用方法进行详细说明,并提供实例说明。 MySQL IN操作符 IN操作符用于指定一个值列表,查询出与这些值中任何一个相等的记录。 语法格式:…

    MySQL 2023年3月9日
    00
  • MongoDB连接数据库方法详解

    安装MongoDB 在开始连接MongoDB之前,需要先安装MongoDB。可以到官网下载对应的安装程序安装,或者通过命令行安装。以下是在Ubuntu系统中通过命令行安装的步骤: 添加apt-key wget -qO – https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add …

    MongoDB 2023年3月13日
    00
  • ASP.NET Core 使用Redis 存储Session 实现共享 Session

      1.添加nuget程序包: Microsoft.Extensions.Caching.Redis 2.在appsettings.json中添加Redis配置: “ConnectionRedis”: { “Connection”: “127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase…

    Redis 2023年4月11日
    00
  • SQL 创建、更新和删除视图的方法

    当需要频繁地使用复杂的SELECT查询语句时,为了方便和简洁起见,可以使用视图(View)。视图是一个虚拟的表,它的内容由SELECT查询语句来定义。可以使用CREATE VIEW语句创建视图,使用ALTER VIEW语句更新视图,使用DROP VIEW语句删除视图。以下是SQL创建、更新和删除视图的方法: 创建视图 语法: CREATE VIEW view…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部