MySQL中timestamp(時間戳)自動更新詳解
MySQL中當記錄更新時timestamp型別自動更新時間
我使用navicat,如果將日期型別選擇為timestamp時,會發現IDE多了一個選項:
檢視IDE自動生成的sql語句:
lastUpdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP
複製程式碼
如果去掉這個選項後:
`lastUpdate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
複製程式碼
區別就是“ ON UPDATE CURRENT_TIMESTAMP”了,他的作用就是當記錄有“變化“時會自動更新lastUpdate時間為系統當前時間。
注意:特意強調了有變化,換句話說,即使使用update語句,但是內容沒有變化的話,該值就不會自動更新了。
TIMESTAMP的變體
1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在建立新記錄和修改現有記錄的時候都對這個資料列重新整理
2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在建立新記錄的時候把這個
欄位設定為當前時間,但以後修改時,不再重新整理它
3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在建立新記錄的時候把這個欄位設定為0,
以後修改時重新整理它
4,TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP
在建立新記錄的時候把這個欄位設定為給定值,以後修改時重新整理它
MySQL目前不支援列的Default 為函式的形式,如達到你某列的預設值為當前更新日期
與時間的功能,你可以使用TIMESTAMP列型別