嗨喽,大家好,我是新時代的農民工小趙。最近在做一個公司内部使用的資料導出工具,我主要負責後端接口層的開發 。開發架構選擇
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,"測試資料")
目前
id
為
1
的資料
update_time
時間為
2022-08-21 09:39:12
,然後修改這條資料,檢視
update_time
的值
UPDATE test SET TEXT = "修改後測試資料"