MySQL創建表時自動生成的兩個時間戳字段,一個是創建時間戳(create_time),一個是最近修改時間戳(update_time)。這兩個字段的作用都十分重要,許多應用程序都需要使用時間戳來跟蹤記錄的創建和更新時間。而且,這兩個字段的使用特別方便,只需要在創建MySQL表時進行相關設置即可。
創建表時增加create_time、update_time字段
創建表時增加create_time和update_time字段,可以為表增加兩條自動跟蹤最近操作時間的記錄,方便程序跟蹤記錄的創建和更新時間。創建表時可以使用如下語句:
CREATE TABLE `tableName`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
... 其他字段 ...,
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
create_time字段的使用方法
在新建記錄時,create_time字段會自動填充當前時間,無需手動輸入。這一功能的實現是通過將create_time字段設置為TIMESTAMP類型,并設置DEFAULT屬性為CURRENT_TIMESTAMP來實現的。在MySQL中,CURRENT_TIMESTAMP可以返回當前的系統時間。
update_time字段的使用方法
update_time字段的使用方法稍微有些復雜。該字段在記錄第一次插入到表中時,被設置為'0000-00-00 00:00:00'值。隨后,每次記錄被修改時,update_time字段都會自動更新,用當前時間戳覆蓋原值。這一功能是通過將update_time字段設置為TIMESTAMP類型,并設置ON UPDATE屬性為CURRENT_TIMESTAMP來實現的。
修改create_time和update_time字段
如果創建表時忘記添加create_time和update_time字段,或者需要修改這兩個字段的名稱或類型,也可以通過ALTER TABLE語句來實現。例如,將參數表(parameter)中的create_time字段改名為created_at,并將update_time字段的類型由TIMESTAMP改為DATETIME,可以使用如下語句:
ALTER TABLE `parameter`
CHANGE COLUMN `create_time` `created_at` DATETIME NOT NULL,
CHANGE COLUMN `update_time` `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
修改create_time和update_time字段一般不會影響表的約束、索引和外鍵。但是,如果該字段在查詢中被使用,那么在進行修改前需要非常小心,以避免出現錯誤。