mysql創(chuàng)建時(shí)間字段添加默認(rèn)值方式
mysql創(chuàng)建時(shí)間字段添加默認(rèn)值
在創(chuàng)建時(shí)間字段的時(shí)候
例如:
create_time
默認(rèn)值可以設(shè)置為CURRENT_TIMESTAMP 插入數(shù)據(jù)時(shí)候會(huì)自動(dòng)添加時(shí)間,默認(rèn)值為當(dāng)前時(shí)間update_time
默認(rèn)值可以設(shè)置為CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 表示每次更新這條數(shù)據(jù)的時(shí)候,該字段都會(huì)更新成當(dāng)前時(shí)間
設(shè)置默認(rèn)值錯(cuò)誤,可以用下面sql修改字段默認(rèn)值
ALTER TABLE `sms_message_system` MODIFY COLUMN `update_time` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間' ;
這兩個(gè)操作是mysql數(shù)據(jù)庫本身在維護(hù),所以可以根據(jù)這個(gè)特性來生成【創(chuàng)建時(shí)間】和【更新時(shí)間】兩個(gè)字段,且不需要代碼來維護(hù).
CREATE TABLE `sms_message_system` ( ? `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '編號(hào)', ? `message_title` varchar(255) DEFAULT '' COMMENT '標(biāo)題', ? `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', ? `release_staff` varchar(255) DEFAULT NULL COMMENT '發(fā)布人員', ? `details` varchar(255) DEFAULT NULL COMMENT '消息詳情', ? `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', ? PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
mysql對(duì)表的創(chuàng)建,creat_time字段設(shè)置默認(rèn)值,update_time字段更新操作設(shè)置為當(dāng)前時(shí)間
目前在設(shè)計(jì)表的時(shí)候,一般會(huì)對(duì)表添加兩個(gè)公共字段,create_time,upate_time。
create_time
在新增數(shù)據(jù)的時(shí)候需要有當(dāng)前時(shí)間upate_time
在新增數(shù)據(jù)的時(shí)候使用當(dāng)前時(shí)間,在這行數(shù)據(jù)被跟新的時(shí)候設(shè)置成更新的當(dāng)前時(shí)間。
上面的處理邏輯,可以在程序中寫代碼處理,也可以在數(shù)據(jù)庫層處理。
create_time,update_time數(shù)據(jù)庫建表語句的設(shè)置
以下是數(shù)據(jù)庫層處理的方案
CREATE TABLE `xxx` ( ? `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主鍵', ? `table_id` int(11) DEFAULT NULL COMMENT '表id', ? `column_name` varchar(64) DEFAULT NULL COMMENT '列名字', ? `data_type` varchar(32) DEFAULT NULL COMMENT '列類型', ? `data_length` int(11) DEFAULT NULL COMMENT '列長度', ? `column_comment` varchar(255) DEFAULT NULL COMMENT '列備注', ? `column_order` int(11) DEFAULT NULL COMMENT '列排序', ? `custom_comment` varchar(255) DEFAULT NULL COMMENT '自定義備注', ? `del_flag` int(11) DEFAULT NULL COMMENT '是否刪除:0未刪除,1刪除', ? `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間', ? `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間', ? PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
對(duì)create_time字段和update_time字段的語法邏輯解說
主要看create_time字段和update_time字段。
DEFAULT CURRENT_TIMESTAMP
表示insert的時(shí)候設(shè)置默認(rèn)值ON UPDATE CURRENT_TIMESTAMP
表示一條數(shù)據(jù)更新的時(shí)候,本條數(shù)據(jù)的該字段設(shè)置為當(dāng)前時(shí)間
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于mysql主備切換canal出現(xiàn)的問題解決
這篇文章主要給大家介紹了關(guān)于mysql主備切換canal出現(xiàn)的一些問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11MySQL使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)自動(dòng)更新的應(yīng)用實(shí)例
觸發(fā)器是非常常見的自動(dòng)化數(shù)據(jù)庫操作方式,無論是在數(shù)據(jù)更新、刪除還是需要自動(dòng)添加一些內(nèi)容到數(shù)據(jù)表上,觸發(fā)器都可以發(fā)揮作用,熟悉 SQL 的基本語法和一些常見的用例,可以幫助你合理地設(shè)置自己的數(shù)據(jù)庫操作流程,2024-01-01mysql 8.0.18 壓縮包安裝及忘記密碼重置所遇到的坑
這篇文章主要介紹了mysql 8.0.18 壓縮包安裝及忘記密碼重置所遇到的坑,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12聽說mysql中的join很慢?是你用的姿勢(shì)不對(duì)吧
這篇文章主要介紹了聽說mysql中的join很慢?是你用的姿勢(shì)不對(duì)吧,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09MySQL提示Accessdeniedforuser‘‘@‘localhost‘”的解決方案
在使用MySQL數(shù)據(jù)庫的過程中,有時(shí)會(huì)遇到錯(cuò)誤提示:“Access denied for user ''@'localhost'”,這個(gè)錯(cuò)誤通常意味著MySQL服務(wù)器拒絕了當(dāng)前用戶的連接請(qǐng)求,本文將詳細(xì)探討該問題的原因及解決方法,需要的朋友可以參考下2025-01-01