MYSQL ON UPDATE CURRENT_TIMESTAMP當字段值發(fā)生改變時才會更新記錄的時間
疑惑
今天看到一個博客說:時間戳有ON UPDATE CURRENT_TIMESTAMP屬性,無論值有沒有改變時間都會更新 (下面是別人博客的截圖)

表示疑惑,于是動手建表寫字段驗證了一波。
驗證
1. 建表:
設(shè)置upd_time的類型為timestamp時間戳類型,并設(shè)置默認值為DEFAULT CURRENT_TIMESTAMP,且設(shè)置ON UPDATE CURRENT_TIMESTAMP,記錄發(fā)生變化時也要更新該時間戳。
CREATE TABLE `t_temp` ( `id` int(11) NOT NULL DEFAULT '0', `username` varchar(255) DEFAULT NULL, `upd_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '默認取當前時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
不想寫建表的sql的話,也可以用Navicat幫你建表,如圖,注意細節(jié):

2. 表建好了,隨便加條記錄,如圖:
PS:留意一下這條記錄的id 和 upd_time字段的值,待會我要更新這條記錄,注意看它們的變化

3. 更新這條id=1的記錄,設(shè)置username=‘mm’。
即,我雖然對這條記錄update了一波,但是并沒有改變?nèi)魏卫锩嫒魏我粋€字段的值

4. 最后,我們刷新一下數(shù)據(jù)表,看看時間戳有沒有發(fā)生變化:
可以看到時間戳并未改變

結(jié)論
設(shè)置字段屬性為時間戳類型,且把默認值設(shè)置成CURRENT_TIMESTAMP的情況下。如果你設(shè)置了時間隨當前時間戳更新( ON UPDATE CURRENT_TIMESTAMP),那么當你更新字段時,只有字段值發(fā)生變化了,你的時間字段才會變?yōu)閁PDATE操作時的時間
補充說明
如果只對字段設(shè)置默認值取CURRENT_TIMESTAMP,而沒有設(shè)置隨當前時間戳更新的話(就是建表時不勾選下圖中的玩意兒),只有記錄創(chuàng)建時會有時間戳,此后對記錄的更新操作都不會再改變該記錄的時間字段了

到此這篇關(guān)于MYSQL ON UPDATE CURRENT_TIMESTAMP當字段值發(fā)生改變時才會更新記錄的時間的文章就介紹到這了,更多相關(guān)MYSQL ON UPDATE CURRENT_TIMESTAMP內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作
這篇文章主要介紹了mysql數(shù)據(jù)庫表增添字段,刪除字段,修改字段的排列等操作,修改表指的是修改數(shù)據(jù)庫之后中已經(jīng)存在的數(shù)據(jù)表的結(jié)構(gòu)2022-07-07
mysql執(zhí)行語句后只有錯誤代碼,沒有錯誤信息的問題
這篇文章主要介紹了mysql執(zhí)行語句后只有錯誤代碼,沒有錯誤信息的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-09-09
mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql 8.0.15 winx64壓縮包安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-05-05
MAC下MYSQL數(shù)據(jù)庫密碼忘記的解決辦法
這篇文章主要介紹了Mac操作系統(tǒng)下MYSQL數(shù)據(jù)庫密碼忘記的快速解決辦法,教大家重置MYSQ密碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11

