簡體   English   中英

用於插入的mysql列和用於更新的不同列

[英]mysql column for insert and different one for update

我正在嘗試創建一個具有兩個時間戳列的表,一個用於創建行時,另一個用於更新行時。 這是我到目前為止所嘗試的:

CREATE TABLE `tmp` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `data` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
   `created` timestamp NOT NULL ,
   `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

但是我收到了這個錯誤:

表定義不正確; 在DEFAULT或ON UPDATE子句中只能有一個TIMESTAMP列和CURRENT_TIMESTAMP

這是一個MYSQL約束,您只能有一個列,其默認值為systime。

此問題也可以參考如何在現有表列中添加“ON update current timestamp”

您可以在MySQL 5.6中執行此操作(在撰寫本文時可用作候選版本但尚未准備好生產)。

從MySQL 5.6.5開始,TIMESTAMP和DATETIME列可以自動初始化並更新為當前日期和時間(即當前時間戳)。 在5.6.5之前,這僅適用於TIMESTAMP,每個表最多只有一個TIMESTAMP列....對於表中的任何TIMESTAMP或DATETIME列,您可以將當前時間戳指定為默認值,即自動更新價值或兩者兼而有之

您可以編寫一個觸發器,單獨在插入上添加created時間戳

delimiter |
CREATE TRIGGER add_created_ts BEFORE INSERT on `tmp`
FOR EACH ROW
BEGIN
   SET NEW.created = current_timestamp;
END
|
delimiter ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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