克服 MySQL 中多個 CURRENT_TIMESTAMP 欄位的限制
通常需要追蹤資料庫表中資料的建立和更新時間戳。在 MySQL 中,CURRENT_TIMESTAMP 關鍵字可用於自動以目前日期和時間填入時間戳記列。但是,MySQL 有一個限制,就是在資料表的 CREATE 語句中只能指定一個 CURRENT_TIMESTAMP 資料列。
解決錯誤
嘗試建立表格時產生的錯誤具有多個CURRENT_TIMESTAMP 欄位的是:
ERROR 1293 (HY000): Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause
此錯誤表明MySQL 無法處理表定義,因為它違反了對多個CURRENT_TIMESTAMP 欄位的限制。
解決方案
要克服此限制,可以使用較新版本的 MySQL(5.6.25 或更高版本)。在 MySQL 5.6.25 及更高版本中,對多個 CURRENT_TIMESTAMP 欄位的限制已被刪除。這可讓您定義一個具有多個 TIMESTAMP 欄位的資料表,這些資料列會自動更新為目前日期和時間。
例如,以下表定義在MySQL 5.6.25 及更高版本中有效:
CREATE TABLE `msgs` ( `id` INT PRIMARY KEY AUTO_INCREMENT, `msg` VARCHAR(256), `ts_create` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `ts_update` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP );
在此表定義中,ts_create 和ts_update 列都是TIMESTAMP 列,並分別將CURRENT_TIMESTAMP 設定為插入和更新操作的預設值。這可確保在建立或更新記錄時,時間戳會自動更新為目前日期和時間。
以上是MySQL 表可以有多個 CURRENT_TIMESTAMP 欄位嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!