2012-07-22 40 views
0

我的SQL查詢來創建2分時間戳列看起來像這樣無法在1個MySQL表

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`; 

但收到錯誤消息

enter image description here

我怎樣才能解決這個問題呢?

+1

請參閱[這個問題](http://stackoverflow.com/questions/4489548/why-there-can-be-only-one-timestamp-column-with-current-timestamp-in-default-cla)。 – Wolfram 2012-07-22 14:22:19

+0

你解決了嗎?觸發器應該有所幫助。 – Wolfram 2012-07-26 10:01:45

回答

1

如截圖所示,這是錯誤代碼1293The reason for this error seems to be some implementation details in 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 UPDATEmodified領域做同樣的或暫時保留解決方案爲您只有一個TIMESTAMP列設置爲CURRENT_TIMESTAMPON UPDATE

-1

時間戳是不是你認爲他們是:-)我認爲你想要datetime列而不是。

0

在一個表中,您不能有多個列與CURRENT_TIMESTAMP。如果你真的需要,你可以使用'插入前'觸發器來模擬它們'。

0

你不能在一個表中有多個時間戳,但是如果你想在表中插入兩個日期/日期時間去一個時間戳和另一個日期時間類型。