Mysql及Navicat中設置字段自動填充當前時間及修改時間實現
?該文章講解了創建時間及修改時間如何通過函數自動填充,并演示了以下幾種方式實現列自動填充創建時間及修改時間:
創建表時設置字段為自動更新時間列。添加新字段為自動更新時間列。更新已有字段為自動更新時間列。通過navicat設置字段為自動更新時間列。函數講解:CURRENT_TIMESTAMP表示插入新行時,該列將自動設置為當前時間,create_time設置了默認值為CURRENT_TIMESTAMP后,插入新數據就會在create_time字段中自動填充當前時間。
ON UPDATE CURRENT_TIMESTAMP表示數據行更新時,該列將自動設置為當前時間,update_time設置了數據更新后就會在update_time字段中自動填充當前時間。
注意:這兩個函數都可以傳參數,傳參可以傳0-6的數字,表示時間的精度,比如 CURRENT_TIMESTAMP(3)表示精確到毫秒值,在設置時函數與字段的時間精度要保持一致,否則會報錯:ERROR 1067 (42000): Invalid default value for 'tmt'。
支持的字段類型:MySQL 5.6.5之后,TIMESTAMP和DATETIME列都支持自動更新,且一個表可設置多個自動更新列。
MySQL 5.6.5之前,只有TIMESTAMP支持自動更新,每個表只能有一個自動更新的時間列。
實現方式:創建表時設置字段為自動更新時間列: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 '創建時間';ADD COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創建時間';更新已有字段為自動更新時間列:ALTER TABLE `table_name`MODIFY COLUMN `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間';MODIFY COLUMN `update_time ` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '創建時間';通過navicat設置字段為自動更新時間列:選中列后在默認值寫上CURRENT_TIMESTAMP,默認值下面的選項意思是當前列是否要在數據行內容更新時更新當前列時間。
好處: 無需依賴業務更新時間,所有的db操作都會自動記錄,便于排查問題。
不足: 數據庫服務器和業務服務器可能存在時間差,導致業務變動的時間與數據庫時間戳存在差異,給實際維護和使用帶來障礙,只能盡可能的校準服務器時間,但不能絕對避免該問題。?
到此這篇關于Mysql及Navicat中設置字段自動填充當前時間及修改時間實現的文章就介紹到這了,更多相關Mysql自動填充當前時間內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!
