簡體   English   中英

一個包含多個TIMESTAMP列的Mysql表

[英]One Mysql Table with Multiple TIMESTAMP Columns

我想要一個包含兩個TIMESTAMP列的表。 一列用於跟蹤創建記錄的時間,另一列用於跟蹤修改記錄的時間。 我希望數據庫處理這些值。 我不希望我的應用層需要考慮它。

我知道如果你有一個帶有DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMPTIMESTAMP列,你就不能擁有另一個TIMESTAMP列。 您可以使用DATETIME但我知道,在觸發器之外無法默認它。

我發現你可以有多個TIMESTAMP ,每個都沒有DEFAULTON 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM