库表中用到了时间的字段,首先百度中查了关于timestamp的一些说明,发现说法不太统一。最终经机过验证得出如下结论:
1.实验环境及版本:MYSQL 5.6 LINUX系统.
2.默认情况下,在一个表中,第一个出现的timestamp字段,在不设置任何默认值的情况下,建表脚本为:
CREATETIME timestamp,
但你建完后再查看表的DDL时,发现已成了这样:
CREATETIME
TIMESTAMP
DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
这个并不奇怪,是因为数据库会对一张表中第一个出现的字段,自动增加默认值。要注意的是,转后的结果是,这个自段就成了自动更新的字段,即(插入记录,更新记录)的时候,数据库会自动记录时间到这个字段。
3.当表中出现第二个timestamp字段时,且也不设置任何默认值的情况下,建表脚本同样为:
CREATETIME timestamp,
但你建完后再查看表的DDL时,发现已成了这样:
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
那么问题来了,这个字段的值,一是不再自动更新,二是,在插入记录时,字段值就是'0000-00-00 00:00:00'。类似于死字段了一下,前端程序也不太好更新。不知道MYSQL为何这样处理。
对于一张表,通常会有两个性质的字段,一个是记录插入时间,即更新时,此值不再变化。二个是记录最后更新时间,也就是随着更新次数变化而更新。那在一个表里能否两个这样类型的字段来实现数据级的自动管理呢?答案是肯定的。做法如下:
1.用最后更新时间字段做为此表的第一个timestamp段,不用设置任何默认值。
2.把插入时间的字段做为第二个或者以后的字段来建,同时指定默认值为:CURRENT_TIMESTAMP。
生成的建本脚本为:TIMESTAMP DEFAULT CURRENT_TIMESTAMP
在POWERDESIGNER中的设置方法为:TALBE->Columns,双击要设置的字段弹出窗口(Column Properties)->Standard
Checkes选项卡上,设置Default。记得一定要下拉选择 “CURRENT_TIMESTAMP”,如果你的PowerDesginer中没有下拉选项,那么你输上也是不管用的。这个问题是因你的 PowerDesginer版本问题。