1. 程式人生 > >MySQL:讓表的時間欄位在insert和update時自動更新

MySQL:讓表的時間欄位在insert和update時自動更新

讓欄位自動更新為當前時間戳:

--insert時若不指定updated值,則插入當前時間
CREATE TABLE `test_update` (
  `id` int(32) NOT NULL,
  `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--insert時和update時若不指定updated值,則插入當前時間
CREATE TABLE `test_update` (
  `id`
int(32) NOT NULL, `updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; --insert時若不指定updated值,則為NULL;update時若不指定updated值,則插入當前時間 CREATE TABLE `test_update` ( `id` int(32) NOT NULL, `updated` timestamp NULL
ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

timestamp型別只用來儲存建立時間和更新時間,因為可以自動更新,不需要程式裡來處理。
一般的時間用varchar儲存比較好處理。

新增一個新欄位:

ALTER TABLE `toll_station` ADD COLUMN 
  `update_time` timestamp NOT NULL 
  DEFAULT CURRENT_TIMESTAMP 
  ON UPDATE CURRENT_TIMESTAMP
COMMENT '記錄資料更新時間,自動更新,不要手動修改' AFTER `status`;