mysql只能有一列是timestamp的问题

MySQL Error “There can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT clause” even though I‘m doing nothing wrong

http://jasonbos.co/two-timestamp-columns-in-mysql/

这是一个非常常见的表:有create_time , update_time,甚至可以说是规范,当然我们想这些时间自动更新,交给Mysql处理,但是问题来了:

创建一个这样的表:

CREATE TABLE `test_table` (
`id` INT( 10 ) NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = INNODB;

原来Mysql会自动处理:

CREATE TABLE `test_table` (
`id` INT( 10 ) NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT 0,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE = INNODB;
INSERT INTO test_table (id, created_at, updated_at) VALUES (1, NULL, NULL);

have fun...

时间: 2024-10-15 01:59:41

mysql只能有一列是timestamp的问题的相关文章

MySQL只能使用定义索引的最左边部份

实验环境:MySQL 5.7.17 1.表结构如下,在id,name,tx列建立主键 mysql> show create table txtx; +-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

mysql 5.5与5.6 timestamp 字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的区别

http://www.111cn.net/database/mysql/55392.htm 本文章来给各位同学介绍关于mysql 5.5与5.6 timestamp 字段 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的区别,希望此教程对各位有帮助. mysql5.6数据库:  代码如下 复制代码 [BIGHD]([email protected]) [cm]> SELECT version(); +------------+ | ve

怎么重置mysql的自增列AUTO_INCREMENT初时值

重置 MySQL 自增列 AUTO_INCREMENT 初时值 注意, 使用以下任意方法都会将现有数据删除. 方法一: delete from tb1; ALTER TABLE tbl AUTO_INCREMENT = 100; 1 2 (好处, 可以设置 AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多, 速度会很慢, 如90多万条, 会在10分钟以上. 方法二: truncate tb1; 1 (好处, 简单, AUTO_INCREMENT 值重新开始计数.) 怎么重置

mysql查询结果多列拼接查询

mysql查询结果多列拼接查询,主要场景是,列表中其中一列涉及另外一张表的多条数据,但是我只需要多条数据中的其中某一列(主子表场景) 关键字:GROUP_CONCAT sql语句如下: SELECT r.id,b.NAME AS group_name,GROUP_CONCAT( a.`name` ) province_name FROM config_rule AS r LEFT JOIN group AS g ON ( r.svg_id = g.id ) LEFT JOIN config_ru

20141230 mysql数值类型和列属性一

枚举字符串 枚举字符串指的是在定义之初就确定要存放的字符串有哪些,然后在数据进行存储的时候就只能存储已经定义过的字符串,只能使用任意的一个字符串.(单选框) 语法:enum 字段名 enum(字符串1,字符串2,-); 枚举采用最多2个字节保存数据,最多能存65535个数据 枚举的意义 1. 规范数据:没有进行维护的数据不能插入 2. 节省空间:实际存储的数据是数字 虽然SQL是一种强类型语言,但是SQL能够自动转换数据类型(与php一样) select有一个特点:后面可以跟任意表达式 证明枚举

mysql之数据表列类型和列约束一

mysql数据表在定义列时,需要确定列的数据类型,以及列的相关属性或是说约束,那么mysql的列类型大致可分为如下: 列类型可分为如下: 1.数值类型 又分为整数和小数 2.时间和日期类型 3.字符类型 稍微有C基础的同学应该不是很陌生,这里呢我不会讲解太多,稍微解释一下就行. 整数部分 整数部分要注意的地方就是字节以及有符号和无符号的区别 我们知晓1byte=8bit 那么2的8次方就是0-255之间 有进制转换的同学应该知道了,那么有符号和无符号是指他需要1位来标识正负数,所以要减去1位,自

mysql之DATETIME、DATE和TIMESTAMP简单了解

MySQL5的日期类型有三种:DATETIME.DATE和TIMESTAMP,除了DATE用来表示一个不带时分秒的是日期,另外两个都带时分秒.TIMESTAMP还可以精确到毫秒. DATE 是 年月日YYYY-MM-DD, DATETIME 是 年月日时分秒YYYY-MM-DD HH:MM:SS, TIMESTAMP是 年月日时分秒YYYY-MM-DD HH:MM:SS. 然后就是区别, DATETIME支持范围:'1000-01-01 00:00:00'到'9999-12-31 23:59:5

mysql优化----explain的列分析

sql语句优化: 1: sql语句的时间花在哪儿? 答: 等待时间 , 执行时间. 等待时间:看是不是被锁住了,那就不是语句层面了是服务端层面了,看连接数内存. 执行时间:到底取出多少行,一次性取出1万行那是你的sql语句写的失败,二是扫描多少行,扫描多少行需要技术来分析,通过explain来分析. 可以重构查询和切分查询. 2: sql语句的执行时间,又花在哪儿了? 答:a: 查 ----> 沿着索引查,甚至全表扫描b: 取 ----> 查到行后,把数据取出来(sending data) 3

MySql的日期类型datetime和timestamp

一.MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME() LOCALTIMESTAMP LOCALTIMESTAMP() 二.关于TIMESTAMP和DATETIME的比较 一个完整的日期格式如下:YYYY-MM-DD HH:MM:SS[.fraction],它可分为两部分:date部分和time部分,其中,date部分对应格式中的"YYYY-MM-