我使用的是mysql,所有表中都有四个字段,
created_by varchar(128)
created_on timestamp default current_timestamp
updated_by varchar(128)
updated_on timestamp default current_timestamp
我读过关于堆栈溢出的不同答案,即每次对表行执行某些操作时,默认值为current_timestamp
的字段都会自动更新。但我希望created_on
在新记录更新时自动插入current_timestamp
,并且当该记录在一段时间后更新时,只有updated_by字段自动更新为current_timestamp
而不是created_by
。
created_by varchar(128)
created_on timestamp default current_timestamp
updated_by varchar(128)
updated_on timestamp default current_timestamp ON UPDATE CURRENT_TIMESTAMP
更多信息::http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html
我使用这个结构:
created_by varchar(128)
created_on timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
updated_by varchar(128)
updated_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在第一次INSERT INTO
期间,将NOW()
用于created_on
。之后,修改行将始终自动更新updated_on
字段。对于UPDATE
语句,根本不需要触摸TIMESTAMP
列。(注意:只有当确实更新了某些内容时,时间戳才会更新。IE。用现有值更新列不会修改任何内容,因此时间戳不会更新。)