簡體   English   中英

無法在1個MySQL表中創建2個時間戳列

[英]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.

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