?該文章講解了創(chuàng)建時(shí)間及修改時(shí)間如何通過函數(shù)自動(dòng)填充,并演示了以下幾種方式實(shí)現(xiàn)列自動(dòng)填充創(chuàng)建時(shí)間及修改時(shí)間:
- 創(chuàng)建表時(shí)設(shè)置字段為自動(dòng)更新時(shí)間列。
- 添加新字段為自動(dòng)更新時(shí)間列。
- 更新已有字段為自動(dòng)更新時(shí)間列。
- 通過navicat設(shè)置字段為自動(dòng)更新時(shí)間列。
函數(shù)講解:
CURRENT_TIMESTAMP
表示插入新行時(shí),該列將自動(dòng)設(shè)置為當(dāng)前時(shí)間,create_time設(shè)置了默認(rèn)值為CURRENT_TIMESTAMP
后,插入新數(shù)據(jù)就會(huì)在create_time字段中自動(dòng)填充當(dāng)前時(shí)間。ON UPDATE CURRENT_TIMESTAMP
表示數(shù)據(jù)行更新時(shí),該列將自動(dòng)設(shè)置為當(dāng)前時(shí)間,update_time設(shè)置了數(shù)據(jù)更新后就會(huì)在update_time字段中自動(dòng)填充當(dāng)前時(shí)間。
注意:這兩個(gè)函數(shù)都可以傳參數(shù),傳參可以傳0-6的數(shù)字,表示時(shí)間的精度,比如
CURRENT_TIMESTAMP(3)
表示精確到毫秒值,在設(shè)置時(shí)函數(shù)與字段的時(shí)間精度要保持一致,否則會(huì)報(bào)錯(cuò):ERROR 1067 (42000): Invalid default value for 'tmt'
。
支持的字段類型:
MySQL 5.6.5
之后,TIMESTAMP
和DATETIME
列都支持自動(dòng)更新,且一個(gè)表可設(shè)置多個(gè)自動(dòng)更新列。MySQL 5.6.5
之前,只有TIMESTAMP
支持自動(dòng)更新,每個(gè)表只能有一個(gè)自動(dòng)更新的時(shí)間列。
實(shí)現(xiàn)方式:
創(chuàng)建表時(shí)設(shè)置字段為自動(dòng)更新時(shí)間列:
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
data VARCHAR(255) NOT NULL,
create_time datetime DEFAULT CURRENT_TIMESTAMP,
update_time datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
添加新字段為自動(dòng)更新時(shí)間列:
ALTER TABLE `table_name`
ADD COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間';
ADD COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間';
更新已有字段為自動(dòng)更新時(shí)間列:
ALTER TABLE `table_name`
MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間';
MODIFY COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間';
通過navicat設(shè)置字段為自動(dòng)更新時(shí)間列:
選中列后在默認(rèn)值寫上CURRENT_TIMESTAMP
,默認(rèn)值下面的選項(xiàng)意思是當(dāng)前列是否要在數(shù)據(jù)行內(nèi)容更新時(shí)更新當(dāng)前列時(shí)間。文章來源:http://www.zghlxwxcb.cn/news/detail-432627.html
總結(jié):
好處: 無需依賴業(yè)務(wù)更新時(shí)間,所有的db操作都會(huì)自動(dòng)記錄,便于排查問題。
不足: 數(shù)據(jù)庫(kù)服務(wù)器和業(yè)務(wù)服務(wù)器可能存在時(shí)間差,導(dǎo)致業(yè)務(wù)變動(dòng)的時(shí)間與數(shù)據(jù)庫(kù)時(shí)間戳存在差異,給實(shí)際維護(hù)和使用帶來障礙,只能盡可能的校準(zhǔn)服務(wù)器時(shí)間,但不能絕對(duì)避免該問題。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-432627.html
到了這里,關(guān)于Mysql及Navicat中如何設(shè)置字段自動(dòng)填充當(dāng)前時(shí)間以及修改時(shí)間。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!