[英]One Mysql Table with Multiple TIMESTAMP Columns
我想要一個包含兩個TIMESTAMP
列的表。 一列用於跟蹤創建記錄的時間,另一列用於跟蹤修改記錄的時間。 我希望數據庫處理這些值。 我不希望我的應用層需要考慮它。
我知道如果你有一個帶有DEFAULT CURRENT_TIMESTAMP
或ON UPDATE CURRENT_TIMESTAMP
的TIMESTAMP
列,你就不能擁有另一個TIMESTAMP
列。 您可以使用DATETIME
但我知道,在觸發器之外無法默認它。
我發現你可以有多個TIMESTAMP
列 ,每個列都沒有DEFAULT
或ON UPDATE
並在創建記錄時插入NULL
,導致每個列都有當前的時間戳。 從那時起,第一列將自動更新。
這很有效,但它給我帶來了一種有趣的感覺。 像這樣可能是一個錯誤,它可以隨時修補。 如果這是它應該工作的方式那么就是這樣。 我會快樂地繼續前行。 任何人都可以告訴我這是否是最好的方法,或者我應該使用觸發器?
它在MySQL文檔中有記錄:
此外, 您可以通過為任何TIMESTAMP列分配NULL值來初始化或更新任何TIMESTAMP列 ,除非已使用NULL屬性定義允許NULL值。
http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
5.6.1之前的MySQL版本不會在同一個表中放置兩個TIMESTAMP
列,除非您正確地指出默認值並允許null。
MySQL 5.6。+允許表中的兩個或多個TIMESTAMP
列。
更多信息: http : //shankargopal.blogspot.in/2013/03/mysql-566-timestamp-columns-and-default.html
MySQL在同一個表中允許多個TIMESTAMP列,請查看以下示例:
CREATE TABLE t1 ( ts1 TIMESTAMP DEFAULT 0, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t2 ( ts1 TIMESTAMP NULL, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP); CREATE TABLE t3 ( ts1 TIMESTAMP NULL DEFAULT 0, ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
請注意,ts1 TIMESTAMP列為DEFAULT且VALUE為0,ts2 TIMESTAMP列為DEFAULT,值為CURRENT_TIMESTAMP。 更多信息,請訪問http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.