Mysql及Navicat中設(shè)置字段自動填充當前時間及修改時間實現(xiàn)
?該文章講解了創(chuàng)建時間及修改時間如何通過函數(shù)自動填充,并演示了以下幾種方式實現(xiàn)列自動填充創(chuàng)建時間及修改時間:
- 創(chuàng)建表時設(shè)置字段為自動更新時間列。
- 添加新字段為自動更新時間列。
- 更新已有字段為自動更新時間列。
- 通過navicat設(shè)置字段為自動更新時間列。
函數(shù)講解:
CURRENT_TIMESTAMP
表示插入新行時,該列將自動設(shè)置為當前時間,create_time設(shè)置了默認值為CURRENT_TIMESTAMP
后,插入新數(shù)據(jù)就會在create_time字段中自動填充當前時間。
ON UPDATE CURRENT_TIMESTAMP
表示數(shù)據(jù)行更新時,該列將自動設(shè)置為當前時間,update_time設(shè)置了數(shù)據(jù)更新后就會在update_time字段中自動填充當前時間。
注意:這兩個函數(shù)都可以傳參數(shù),傳參可以傳0-6的數(shù)字,表示時間的精度,比如
CURRENT_TIMESTAMP(3)
表示精確到毫秒值,在設(shè)置時函數(shù)與字段的時間精度要保持一致,否則會報錯:ERROR 1067 (42000): Invalid default value for 'tmt'
。
支持的字段類型:
MySQL 5.6.5
之后,TIMESTAMP
和DATETIME
列都支持自動更新,且一個表可設(shè)置多個自動更新列。
MySQL 5.6.5
之前,只有TIMESTAMP
支持自動更新,每個表只能有一個自動更新的時間列。
實現(xiàn)方式:
創(chuà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;
添加新字段為自動更新時間列:
ALTER TABLE `table_name` ADD COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間'; ADD COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間';
更新已有字段為自動更新時間列:
ALTER TABLE `table_name` MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間'; MODIFY COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間';
通過navicat設(shè)置字段為自動更新時間列:
選中列后在默認值寫上CURRENT_TIMESTAMP
,默認值下面的選項意思是當前列是否要在數(shù)據(jù)行內(nèi)容更新時更新當前列時間。
總結(jié):
好處: 無需依賴業(yè)務(wù)更新時間,所有的db操作都會自動記錄,便于排查問題。
不足: 數(shù)據(jù)庫服務(wù)器和業(yè)務(wù)服務(wù)器可能存在時間差,導(dǎo)致業(yè)務(wù)變動的時間與數(shù)據(jù)庫時間戳存在差異,給實際維護和使用帶來障礙,只能盡可能的校準服務(wù)器時間,但不能絕對避免該問題。?
到此這篇關(guān)于Mysql及Navicat中設(shè)置字段自動填充當前時間及修改時間實現(xiàn)的文章就介紹到這了,更多相關(guān)Mysql自動填充當前時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Navicat?for?MySQL導(dǎo)入csv文件時出現(xiàn)中文亂碼的問題解決
- Navicat中新建MySQL數(shù)據(jù)庫與新建、修改、刪除數(shù)據(jù)表及刪除數(shù)據(jù)庫詳細操作方法
- Mysql+Navicat16長期免費直連數(shù)據(jù)庫安裝使用超詳細教程
- Navicat中修改MySQL的編碼格式
- Navicat for Mysql 字段注釋中文亂碼問題及解決
- Navicat導(dǎo)入mysql數(shù)據(jù)庫的圖文教程
- navicat連接mysql修改root密碼最簡潔方法
- Navicat連接MySQL時出現(xiàn)的連接失敗問題及解決
- 最新Navicat?15?for?MySQL破解+教程?正確破解步驟
- Navicat操作MYSQL的詳細過程
相關(guān)文章
MYSQL突破secure_file_priv寫shell問題
這篇文章主要介紹了MYSQL突破secure_file_priv寫shell問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01MySQL GRANT用戶授權(quán)的實現(xiàn)
授權(quán)就是為某個用戶賦予某些權(quán)限。MySQL 提供了 GRANT 語句來為用戶設(shè)置權(quán)限。具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06