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日

相关文章

  • 主键和超级键的区别

    主键和超级键都是关系数据库领域中的术语,是用于描述数据库中数据表的两个概念。 主键 什么是主键 主键是一个不可重复的、唯一性的、非空的字段,用来唯一标识一条记录。每个数据表都必须至少拥有一个主键。 主键的特点 唯一性:每个主键值只会在数据表中出现一次 非空:主键值不能为空 不可重复:每个主键值必须唯一 主键的示例 假设有一个数据表格students,其中有以…

    database 2023年3月27日
    00
  • MySQL如何利用存储过程快速生成100万条数据详解

    以下是MySQL如何利用存储过程快速生成100万条数据的详解攻略。 什么是存储过程? 存储过程是预编译的SQL语句集合。它们类似于函数,在特定的输入值上执行一系列SQL语句来生成某个输出。存储过程可以减少客户端/服务器之间的交互次数,增加了安全性并提高了性能。 利用存储过程快速生成100万条数据的步骤 步骤1:创建生成数据的表 首先,需要创建一张表,用于存储…

    database 2023年5月21日
    00
  • Oracle 存储过程发送邮件实例学习

    1. 学习前准备 在学习 Oracle 存储过程发送邮件的过程中,我们需要先进行一些准备工作: 安装并配置 Oracle 数据库及其配置文件; 安装 Oracle 的邮件服务包 —— UTL_MAIL; 创建邮件发送存储过程。 2. 安装 UTL_MAIL UTL_MAIL 包用于在 Oracle 数据库中发送邮件,因此,在进行发送邮件之前,需要先安装该包。…

    database 2023年5月21日
    00
  • 教你怎样用Oracle方便地查看报警日志错误

    如何使用Oracle查看报警日志错误 简介 报警日志是Oracle数据库非常重要的一部分。通过监控报警日志,我们可以追踪数据库发生的各种错误和异常情况。但是,由于报警日志的体积较大,有时即使出现错误,也难以一下子找到。因此,本文将教您如何使用Oracle方便地查看报警日志错误。 步骤 步骤1:创建一个日志表 首先需要创建一个用于存储报警日志的表,使用以下SQ…

    database 2023年5月21日
    00
  • vue如何将对象中所有的key赋为空值

    下面是详细讲解“Vue如何将对象中所有的key赋为空值”的攻略: 一、使用Object.keys()和forEach或reduce 首先,使用Object.keys()获取该对象所有的key,返回一个数组。 然后,使用forEach或reduce(根据实际需求而定)遍历该数组,将对象中每个key的值赋为null或空字符串。 代码示例(使用forEach): …

    database 2023年5月18日
    00
  • SQL CHAR与VARCHAR

    SQL CHAR和VARCHAR的区别 在SQL中,CHAR和VARCHAR都是用来存储字符串类型数据的,但它们之间有一些明显的区别。 CHAR是固定长度的字符串类型,可以存储0到255个字符。VARCHAR是可变长度的字符串类型,可以存储0到65535个字符。 CHAR需要的存储空间是固定的,无论其中的实际数据内容是多少,都会占用指定的长度;VARCHAR…

    database 2023年3月27日
    00
  • Redis的阻塞式列表解析

      1.   命令帮助 通过Redis-cli中的help进行查看: 127.0.0.1:6379>help BLPOP     BLPOP key [key …] timeout   summary: Remove and get the first element ina list, or block until one is availabl…

    Redis 2023年4月12日
    00
  • oracle执行cmd的实现方法

    实现oracle执行cmd的方法有很多种,下面我列出其中两种常见的方法供参考。 方法一:使用外部gedit程序执行cmd 步骤: 在数据库服务器中安装gedit文本编辑器,例如以下命令: sudo apt-get install gedit 创建一个shell脚本文件,命名为exec_cmd.sh,并将以下代码添加到文件中: #!/bin/sh gedit …

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