mysql設(shè)置值timestamp獲取當(dāng)前時間并自動更新方式
需求描述:現(xiàn)需要數(shù)據(jù)庫中一個字段來記錄當(dāng)前記錄的最近修改時間或者創(chuàng)建時間,并自動更新維護(hù)。
timestamp類型的使用
示例如下:
創(chuàng)建一個數(shù)據(jù)庫,并指定 uptime為 timestamp類型
create table test( tid int primary key auto_increment, uptime timestamp, hobby varchar(20) );
插入一條數(shù)據(jù)
insert into test (tid,uptime,hobby) values(null,null,null);
查看數(shù)據(jù)庫數(shù)據(jù)

我們看到數(shù)據(jù)插入成功,但是uptime字段顯示為 null。
我們再插入一條數(shù)據(jù),如下:
insert into test (tid,uptime,hobby) values(null,current_timestamp,null);
查看數(shù)據(jù)庫數(shù)據(jù)如下:

我們看到第二條數(shù)據(jù)插入成功了,并且時間為 當(dāng)前插入的時間
下面我們更新一下字段看 時間是否會自動維護(hù)
update test set hobby='籃球' where tid < 4;
我們看效果

時間并沒有自動更新,還是我們插入的時間,并不是修改的時間。
我們首先手動更新一下時間:
update test set uptime = current_timestamp where tid < 10;
效果如圖:

當(dāng)我們設(shè)置timestamp類型為current_timestamp時,系統(tǒng)會自動獲取當(dāng)前修改或者創(chuàng)建時間,但是不糊自動維護(hù)。
那么問題來了?
如何讓timestamp類型自動維護(hù)
1.我們重新傳建一個是數(shù)據(jù)庫
create table test2( pid int primary key auto_increment, uptime timestamp null default current_timestamp on update current_timestamp, hobby varchar(30) );
2.我們先看一下創(chuàng)建后的表結(jié)構(gòu):
show create table test2;

我們注意一下 uptime 字段,可以為空,默認(rèn)時間為current_timestamp, on update curret_timestamp設(shè)置可以使記錄發(fā)生改變的時候時間自動改變。
插入一條沒有默認(rèn)時間的數(shù)據(jù)數(shù)據(jù)
insert into test2 values(null,null,null);
查看表結(jié)構(gòu)

我們可以看到當(dāng)我們沒有設(shè)置默認(rèn)值的時候時間默認(rèn)為null
我們再插入一條帶默認(rèn)時間的數(shù)據(jù)
insert into test2 values(null,current_timestamp,null);
如圖:

我們可以看到 有兩條數(shù)據(jù),一條有默認(rèn)時間一條沒有。
下面我們修改一下 兩條記錄,看時間是否會自動維護(hù)
update test2 set hobby='籃球' where pid < 5;
大功告成~

我們可以看到時間字段 在 自動維護(hù),之前默認(rèn)值為空的時候,在修改記錄之后也會自動將時間改為 修改時間。
最后的完善
我們已經(jīng)可以做到 時間自動維護(hù)了,還有一個 小缺點,
就是在剛開始插入時間時,我們沒有傳入默認(rèn)時間的話,初始值為null,只有我們修改這條記錄的時候他才會自動記錄時間。
完善方案:
在創(chuàng)建數(shù)據(jù)庫的時候設(shè)置 uptime字段為 not null
create table test3(pid int primary key auto_increment,uptime timestamp not null default current_timestamp on update current_timestamp);
表結(jié)構(gòu)如下:

這樣我們就會在創(chuàng)建該記錄時候強(qiáng)制傳入一個時間,并在修改的時候自動維護(hù)。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
windows系統(tǒng)mysql5.7.18安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了windows系統(tǒng)下mysql5.7.18安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
Spring jdbc中數(shù)據(jù)庫操作對象化模型的實例詳解
這篇文章主要介紹了Spring jdbc中數(shù)據(jù)庫操作對象化模型的實例詳解的相關(guān)資料,希望通過本文大家能夠了解掌握這部分內(nèi)容,需要的朋友可以參考下2017-09-09
通過實例解析MySql CURRENT_TIMESTAMP函數(shù)
這篇文章主要介紹了通過實例解析MySql CURRENT_TIMESTAMP函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
Centos7 移動mysql5.7.19 數(shù)據(jù)存儲位置的操作方法
這篇文章主要介紹了Centos7 移動mysql5.7.19 數(shù)據(jù)存儲位置的實現(xiàn)方法,需要的朋友可以參考下2017-10-10

