1. 程式人生 > >MySQL中timestamp(時間戳)自動更新詳解

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列型別