mysql設置值timestamp獲取當前時間并自動更新方式
需求描述:現(xiàn)需要數(shù)據(jù)庫中一個字段來記錄當前記錄的最近修改時間或者創(chuàng)建時間,并自動更新維護。
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ù)插入成功了,并且時間為 當前插入的時間
下面我們更新一下字段看 時間是否會自動維護
update test set hobby='籃球' where tid < 4;
我們看效果

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

當我們設置timestamp類型為current_timestamp時,系統(tǒng)會自動獲取當前修改或者創(chuàng)建時間,但是不糊自動維護。
那么問題來了?
如何讓timestamp類型自動維護
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 字段,可以為空,默認時間為current_timestamp, on update curret_timestamp設置可以使記錄發(fā)生改變的時候時間自動改變。
插入一條沒有默認時間的數(shù)據(jù)數(shù)據(jù)
insert into test2 values(null,null,null);
查看表結(jié)構(gòu)

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

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

我們可以看到時間字段 在 自動維護,之前默認值為空的時候,在修改記錄之后也會自動將時間改為 修改時間。
最后的完善
我們已經(jīng)可以做到 時間自動維護了,還有一個 小缺點,
就是在剛開始插入時間時,我們沒有傳入默認時間的話,初始值為null,只有我們修改這條記錄的時候他才會自動記錄時間。
完善方案:
在創(chuàng)建數(shù)據(jù)庫的時候設置 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)建該記錄時候強制傳入一個時間,并在修改的時候自動維護。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL INNER JOIN 的底層實現(xiàn)原理分析
這篇文章主要介紹了MySQL INNER JOIN 的底層實現(xiàn)原理,INNER JOIN的工作分為篩選和連接兩個步驟,連接時可以使用多種算法,通過本文,我們深入了解了MySQL中INNER JOIN的底層實現(xiàn)原理,需要的朋友可以參考下2023-06-06
在linux服務器上配置mysql并開放3306端口的操作步驟
這篇文章主要介紹了在linux服務器上配置mysql并開放3306端口,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09
Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語句
這篇文章主要介紹了Mysql保持現(xiàn)有內(nèi)容在后面增加內(nèi)容的sql語句,需要的朋友可以參考下2017-05-05
mysql忘記root密碼的解決辦法(針對不同mysql版本)
這篇文章主要介紹了mysql忘記root密碼的解決辦法(針對不同mysql版本),文章通過代碼示例和圖文結(jié)合的方式給大家講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-06-06

