2016-01-02 4 views
1

Предположим, у меня есть таблица с именем пользователя, как этотМетка времени автоматически обновлять при обновлении любого поля в MySQL

╔════╦══════════╦═════════════════════╗ 
║ id ║ key ║  keytime  ║ 
╠════╬══════════╬═════════════════════╣ 
║ 1 ║ somekey1 ║ 2016-01-01 15:39:43 ║ 
║ 2 ║ somekey2 ║ 2016-01-02 15:39:43 ║ 
╚════╩══════════╩═════════════════════╝ 

в KeyTime тип поля TIMESTAMP и значение по умолчанию CURRENT_TIMESTAMP

Как обновление ключевое слово поле автоматически при обновлении ключевое поле

UPDATE `user` 
SET `Key` = '2' 
WHERE `id` = 1; 
+0

Вы можете использовать триггер – lad2025

+1

Приведите пример –

ответ

1

Использование

ALTER TABLE `user` 
    MODIFY keytime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; 

, чтобы сделать его автоматическое обновление.

См the doc

+1

у меня уже есть в таблице. Как это изменить? –

+0

Да ладно. Это не так сложно. :-) Просто google * alter mysql table *. –

+1

ALTER TABLE 'user' CHANGE' keyime' 'keyime' TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; хорошо спасибо –

1

Вы можете использовать BEFORE UPDATE триггер:

CREATE TABLE `user`(id INT AUTO_INCREMENT PRIMARY KEY, 
        `key` VARCHAR(100), 
        keytime TIMESTAMP DEFAULT CURRENT_TIMESTAMP); 

INSERT INTO `user`(`key`, keytime) VALUES ('key', CURRENT_TIMESTAMP - 10000); 

CREATE TRIGGER user_update 
BEFORE UPDATE ON `user` 
FOR EACH ROW 
    SET NEW.keytime = CURRENT_TIMESTAMP; 

UPDATE `user` 
SET `Key` = '2' 
WHERE `id` = 1; 

SqlFiddleDemo

+1

Спасибо за ваш пример –

Смежные вопросы