MySQL Timestamp 型態 的 屬性(新增/修改 自動更新 Timestamp型態 的 欄位)

MySQL 的 timestamp 型態 的屬性比較特別, 預設 timestamp 的屬性是, 只要有值 新增/修改(同一個row), MySQL 會自動幫你將 "timestamp 型態的欄位" 寫入現在時間.

有兩種屬性可供調整使用:

  • 自動初始化: 此欄位 寫入 資料時, 自動將 timestamp 的欄位寫入現在時間(建立時, 自動寫入時間).(DEFAULT CURRENT_TIMESTAMP)
  • 自動更新: 此欄位 修改 資料時, 自動將 timestamp 的欄位寫入現在時間(更新時, 自動寫入時間). (ON UPDATE CURRENT_TIMESTAMP)

主要有下述 四種 設法/時機: (範例轉載自官方網站: MySQL 5.1 Reference Manual - TIMESTAMP Properties)

  • 自動初始化 及 自動更新

    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

  • 只做自動初始化 (建立時初始化, 更新時不修改時間)

    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

  • 只做自動更新 (建立時不做初始化動作)

    ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

  • 全都不做(使用這個的話, 或許直接用 DATETIME 的型態 似乎比較方便?)

    ts TIMESTAMP DEFAULT 0


關於 Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming。將永久鏈結加入書籤。

MySQL Timestamp 型態 的 屬性(新增/修改 自動更新 Timestamp型態 的 欄位) 有 2 則回應

  1. Richer 說道:

    現在回應這篇文章有點遲到了
    想要請問你一下,在資料型態設定成 Timestamp 且設定成 Update 的時候自動修正。
    那有辨法在這樣的情況下,在特定的 update 語法之下讓他不要自動更新嗎?

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料