环境: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 ;
ERROR 1366 (HY000): Incorrect string value:’XXX’ for column "XXX at row 1解决Oracle SQL建立有效索引减少回表相关资讯 MySQL基础知识
- MySQL增加普通用户后无法登陆问题 (12/15/2012 19:35:24)
- MySQL连接查询精解 (12/11/2012 09:19:27)
- MySQL备份与恢复的三种方法总结 (12/05/2012 12:15:32)
| - MySQL 多表 update sql语句总结 (12/11/2012 09:52:37)
- Ubuntu下更改MySQL数据库文件的目 (12/08/2012 21:29:31)
- MySQL游标循环示例 (12/05/2012 07:05:56)
|
本文评论 查看全部评论 (0)