杭州华育LOGO

学员作品 学员心得技术园地 潮人地 Android(安卓)培训 杭州电脑(计算机)培训 杭州网络营销培训 杭州JAVA培训
返回首页
当前位置: 主页 > 学员天地 > 技术园地 >

杭州java培训名博之MySQL datetime数据类型设置当前时间为默认值

时间:2012-10-26 18:32来源:CSDN 作者:杭州华育 点击:
MySQL datetime数据类型设置当前时间为默认值

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

环境: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 允许空就可以了 

 

 

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


 

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

 

          方法二:


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

 

 

  1. create table test_time (   
  2.  idint(11),   
  3.  create_time datetime   
  4. );   
  5. delimiter |   
  6. create trigger default_datetime beforeinsert on test_time   
  7.   foreach row   
  8.     if new.create_time is null then   
  9.       set new.create_time = now();   
  10.     end if;|   
  11. delimiter ;   


 

 

         参考资料:


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

 

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

 

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

 

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

 

(责任编辑:杭州华育 ;杭州java培训,网络营销培训,杭州计算机培训,it培训,详询客服报名咨询
分享到:
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
提交报名信息

2018年杭州将加大力度经济转型,吸纳更多的技术人才落户杭州,软件人才需求量更是大幅提升,针对目前杭州IT行业人才需求“井喷”现象,华育软件杭州实训基地与杭州155家IT名企合作,建立人才培养与输送关系,启动“Eduask国家高端IT紧缺人才培养工程”。4月针对杭州地区18-28岁大中专生待业青年发放68个技能实训名额(应届大中专毕业生优先),经短期专业岗前实训后推荐进入企业,起薪4500-8000元,五险一金。

姓名: * 性别:
学历: 电话: *
所在地: *
您目前状况:
留言:
*