[英]Unable to create 2 timestamp columns in 1 MySQL table
我的SQL查詢看起來像這樣
ALTER TABLE `exercises`
ADD COLUMN `creation_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER `lesson_id`,
ADD COLUMN `modification_dt` timestamp NULL DEFAULT '' ON UPDATE CURRENT_TIMESTAMP AFTER `creation_dt`;
但是收到錯誤消息
我該如何解決這個問題?
如屏幕截圖所示,這是錯誤代碼1293
。 出現此錯誤的原因似乎是MySQL中的一些實現細節。
您可以通過使用DATETIME
類型的列來解決它,但這不允許將當前時間設置為default
值。 但是,您可以在應用程序代碼中或使用Trigger來解決此問題。 我使用了一個示例表(稱為datetimetest
),並添加了以下觸發器:
數據庫架構:
CREATE TABLE `datetimetest` (
`id` int(11) NOT NULL,
`created` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TRIGGER trigger_SetCreated
BEFORE INSERT ON datetimetest
FOR EACH ROW SET NEW.created = UTC_TIMESTAMP();
您可以使用BEFORE UPDATE
的觸發器對modified
字段執行相同的操作,也可以保留解決方案,因為現在只有一個TIMESTAMP
列被設置為CURRENT_TIMESTAMP
ON UPDATE
。
一個表中不能有CURRENT_TIMESTAMP
多列。 如果確實需要,可以使用“插入前”觸發器來模擬它們。
您在一個表中不能有多個時間戳,但是,如果您想在表中插入兩個日期/日期時間,請使用一個時間戳和另一種datetime類型。
時間戳不是您想的那樣:-)我想您想改用datetime
列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.