轉載:http://blog.163.com/user_zhaopeng/blog/static/166022708201252323942430/
業務場景:
例如用戶表,我們需要建一個字段是創建時間, 一個字段是更新時間.
解決辦法可以是指定插入時間,也可以使用數據庫的默認時間.
在mysql中如果設置兩個默認CURRENT_TIMESTAMP,會出現這樣的錯誤.
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause. |
錯誤的建表語句:
CREATE TABLE `db1`.`sms_queue` ( `Id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `Message` VARCHAR(160) NOT NULL DEFAULT 'Unknown Message Error', `CurrentState` VARCHAR(10) NOT NULL DEFAULT 'None', `Phone` VARCHAR(14) DEFAULT NULL, `Created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `LastUpdated` TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP, `TriesLeft` tinyint NOT NULL DEFAULT 3, PRIMARY KEY (`Id`) ) ENGINE = InnoDB; |
解決辦法,可以使用觸發器或者其他,在此還是使用數據庫的方式.
建表語句:
create table test_table( id integer not null auto_increment primary key, stamp_created timestamp default '0000-00-00 00:00:00', stamp_updated timestamp default now() on update now() ); |
測試:
|