歷史上,在5.SQL.5 之前的資料列的限制版本中,有是一項限制,限製表只能有一個TIMESTAMP列,其中任一DEFAULT CURRENT_TIMESTAMP 或 ON UPDATE CURRENT_TIMESTAMP 子句。此限制在 2008 年首次引入 INT、BIGINT 和 SMALLINT 整數時就擴展到了它們。
此限制源自於遺留實作問題,需要對 CURRENT_TIMESTAMP 功能進行特定實作。
例如,考慮下面的表定義,它嘗試定義兩個具有 CURRENT_TIMESTAMP 值的 TIMESTAMP列:
CREATE TABLE `foo` ( `ProductID` INT(10) UNSIGNED NOT NULL, `AddedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdatedDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=INNODB;
此定義將導致以下錯誤:
錯誤代碼:1293<br>表定義不正確; <br>只能有一個TIMESTAMP 列,<br>DEFAULT 或ON<br>UPDATE 子句UPDATE子句<p></p>此錯誤表示表定義違反了上述限制。 <h3></h3>解除限制<p></p>儘管有技術基礎對於這個限制,MySQL 團隊認識到它的不便。隨後,在 MySQL 5.6.5(2012 年 4 月 10 日發布)中,取消了該限制。 <p></p>本次更新的變更日誌指出:<pre class="brush:php;toolbar:false">Previously, at most one TIMESTAMP column per table could be automatically initialized or updated to the current date and time. This restriction has been lifted. Any TIMESTAMP column definition can have any combination of DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP clauses. In addition, these clauses now can be used with DATETIME column definitions.
以上是在 MySQL 5.6.5 版本之前,使用 CURRENT_TIMESTAMP 與 TIMESTAMP 欄位有哪些限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!