天天看點

關于設定MySQL中create_time和update_time預設值和實時更新

關于設定MySQL中create_time和update_time預設值和實時更新

嗨喽,大家好,我是新時代的農民工小趙。最近在做一個公司内部使用的資料導出工具,我主要負責後端接口層的開發 。開發架構選擇​

​Spring Boot​

​​架構,資料庫選用​

​MySQL​

​ 資料庫。在建庫建表和同僚溝通過程中,有了如下的思考。

首先,通過對業務的梳理和與産品同學的溝通,按照整個系統的需求,總共抽取出了六張資料表,對每張表需要的業務字段進行建立外,也添加了​

​create_time​

​​和​

​update_time​

​​字段,便于後期維護。資料庫建立時間類型的字段一般設定為 ​

​datetime​

​​ 或 ​

​timestamp​

​​ 類型。那麼,涉及到時間字段的設定時,都會對其設定預設值和​

​update_time​

​字段設定實時更新,接下來梳理其使用方式。

MySQL給時間字段設定預設值

建表語句:

CREATE TABLE `test` (
    `id` int COMMENT 'ID',
    `text` varchar(255) DEFAULT '' COMMENT '内容',
    `create_time` datetime NOT NULL DEFAULT now() COMMENT '建立時間',
    `update_time` datetime NOT NULL DEFAULT now() COMMENT '更新時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;      
  • ​DEFAULT now()​

    ​​表示當資料插入資料庫時,​

    ​create_time​

    ​​和​

    ​update_time​

    ​預設值為目前時間

實時更新update_time字段

CREATE TABLE `test` (
    `id` int COMMENT 'ID',
    `text` varchar(255) DEFAULT '' COMMENT '内容',
    `create_time` datetime NOT NULL DEFAULT now() COMMENT '建立時間',
    `update_time` datetime NOT NULL DEFAULT now() ON UPDATE now() COMMENT '更新時間'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;      
  • ​ON UPDATE now()​

    ​​表示更新這條資料的時候,​

    ​update_time​

    ​會更新成目前時間

讓我們來測試一下:

首先給​

​test​

​表中添加一條資料

INSERT INTO test(id,TEXT) VALUE(1,"測試資料")      
關于設定MySQL中create_time和update_time預設值和實時更新

目前​

​id​

​​為​

​1​

​​的資料​

​update_time​

​​時間為​

​2022-08-21 09:39:12​

​​,然後修改這條資料,檢視​

​update_time​

​的值

UPDATE test SET TEXT = "修改後測試資料"      
關于設定MySQL中create_time和update_time預設值和實時更新