MySQL datetime数据类型设置当前时间为默认值

标签: mysql datetime 数据类型 | 发表时间:2012-09-11 08:37 | 作者:Wentasy
出处:http://blog.csdn.net

        环境:MySQL Sever 5.1 + MySQL命令行工具


        问题:MySQL datetime数据类型设置当前时间为默认值

 

        解决:


        方法一:


         由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。 


         TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。 

         自动更新第一个TIMESTAMP列在下列任何条件下发生: 


         1.列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。

 

         2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。) 


         3.你明确地设定TIMESTAMP列为NULL. 


         4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。 

 

         所以把日期类型 选择成timestamp 允许空就可以了 


CREATE TABLE test ( 
uname varchar(50) NOT NULL, 
updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


          如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可 

 

          方法二:


          在MySQL5.0以上版本中也可以使用trigger来实现此功能。 


create table test_time ( 
 idint(11), 
 create_time datetime 
); 
delimiter | 
create trigger default_datetime beforeinsert on test_time 
  foreach row 
    if new.create_time is null then 
      set new.create_time = now(); 
    end if;| 
delimiter ; 


 

         参考资料:


          mysql 日期默认系统时间 mysql 默认值不支持函数


          MySQL的datetime设置当前时间为默认值


          MySQL里如何给日期类型设置默认值


          MySQL 字段约束 null,notnull,default,auto_increment





作者:Wentasy 发表于2012-9-11 8:37:30 原文链接
阅读:0 评论:0 查看评论

相关 [mysql datetime 数据类型] 推荐:

MySQL datetime数据类型设置当前时间为默认值

- - CSDN博客推荐文章
        环境:MySQL Sever 5.1 + MySQL命令行工具.         问题:MySQL datetime数据类型设置当前时间为默认值.          由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.

高性能MySql进化论(二):数据类型的优化_下

- - CSDN博客数据库推荐文章
在实际的应用程序中往往需要存储两种体积较大的数据,一种是较大的Binary数据,e.g. 一张10M的图片,另外一种是 较大的文本 e.g.一篇几万字的文章. 在Oracle中有BOLB和CLOB来应对这两种数据,而在MySQL中对应的是BLOB以及TEXT. 鉴于这两种数据类型的特殊性,在MySQL中对BLOB以及TEXT的存储和操作做了特殊的处理:.

MYSQL查询优化:数据类型与效率

- - haohtml's blog
这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导:. 在可以使用短数据列的时候就不要用长的. 如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要. 如果你在数据列中存储的最长的值有 40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40). 如果你能够用MEDIUMINT代替BIGINT,那么你的数据表就小一些 (磁盘I/O少一些),在计算过程中,值的处理速度也快一些.

高性能MySql进化论(一):数据类型的优化_上

- - CSDN博客数据库推荐文章
在数据库的性能调优的过程中会涉及到很多的知识,包括字段的属性设置是否合适,索引的建立是否恰当,表结构涉及是否合理,数据库/操作系统 的设置是否正确…..其中每个topic可能都是一个领域. 在我看来,在数据库性能提升关键技术中,对字段的优化难度相对较低且对性能的影响也非常的大. 由于Mysql支持的数据类型比较多,且每个类型都有其独特的特性,但是有时候在选择一个具体的数据类型时,往往都是随意的选择一个能用的类型,而不会考虑到这个类型是否是最优的.

关于MySQL数据库的数据类型发生隐形转换的问题咨询

- - mysqlops
1.MySQL对于int类型索引使用问题,如:tb中有主键id,普通索引tid,在执行SQL:select * from tb where id = 2 order by id 时,. extra为空,这里的id值没带引号,如果带上引号extra也为空. 2.当 select * from tb where tid = 2 order by tid,tid为普通索引,这时tid的值带引号和不带引号就会有区别,带引号时extra会提示额外的排序,不带引号时extra为空,这是怎么一回事.

Redis 数据类型

- - ITeye博客
该文章是对Redis官方文档的翻译. 字符串是Redis值的最基础的类型. Redis字符串是二进制安全的,这意味着一个Redis字符串可以包含任何种类的数据,例如一个JPEG图像或者一个序列化的Ruby对象. 一个字符串值最多可以保存512M字节的内容. 你可以使用Redis的字符串做一些有趣的事情,例如你可以:.

再谈JavaScript的数据类型问题

- 茄 - aimingoo的专栏
 JavaScript的数据类型问题已经讨论过很多次了,但许多人还有许多书仍然沿用着错误的、混乱的一些观点,所以就再细讲一回. 提及这个讨论的原因在于argb同学在我的MSN博客(现在变成了wordproess,在这里)上的一段回复,又更早的起源则是两年前关于《JavaScript征途》一书的大讨论:.

JPA基本数据类型映射

- - 编程语言 - ITeye博客
                // initialValue = 0, allocationSize = 1)   Oracle中序列方式生成主键.                 //Oracle序列方式生成/主键.                 @GeneratedValue(strategy = GenerationType.IDENTITY)   //MySQL,SQLSErver自增长方式.

Redis 数据类型及应用场景

- - SegmentFault 最新的文章
所有数据存储在内存中,高速读写. 提供丰富多样的数据类型:string、 hash、 set、 sorted set、bitmap、hyperloglog. 提供了 AOF 和 RDB 两种数据的持久化保存方式,保证了 Redis 重启后数据不丢失. Redis 的所有操作都是原子性的,还支持对几个操作合并后的原子性操作,支持事务.

SQL 数据类型和 Java 数据类型间的映射关系

- - ITeye博客
由于 SQL 数据类型和 Java 数据类型是不同的,因此需要某种机制在使用 Java 类型的应用程序和使用 SQL 类型的数据库之间来读写数据. 为此,JDBC 提供了 getXXX 和 setXXX 方法集、方法 registerOutParameter 和类 Types. 本章汇集了影响各种类和接口的数据类型的有关信息,并列出所有的对应关系表(这些表显示了 SQL 类型和 Java 类型之间的映射关系)以便于参考.