Столбец «Обновление метки времени» MySQL - триггер - PullRequest
8 голосов
/ 12 января 2010

Я добавляю столбец tsu (обновление метки времени) типа DATETIME к числу моих таблиц.

Мне нужно написать BEFORE UPDATE триггеров, которые обновят столбец до CURRENT_TIMESTAMP(), но я не могу понять это правильно. Пробовал:

DELIMITER $$
CREATE
    TRIGGER `cams`.`tsu_update_csi` BEFORE UPDATE
    ON `cams`.`csi`
    FOR EACH ROW BEGIN
        UPDATE csi SET tsu = CURRENT_TIMESTAMP WHERE csi_code = OLD.csi_code;
    END$$
DELIMITER ;

Может кто-нибудь указать мне в правильном направлении, пожалуйста? MTIA

Ответы [ 3 ]

15 голосов
/ 12 января 2010

Хорошо, попробуйте это:

DELIMITER $$ CREATE  
    TRIGGER `cams`.`tsu_update_csi` BEFORE UPDATE  
    ON `cams`.`csi`  
      FOR EACH ROW BEGIN  
        SET NEW.tsu = CURRENT_TIMESTAMP;   
END$$ DELIMITER ;
9 голосов
/ 12 января 2010

Если поле можно определить как метку времени, вы можете использовать следующее:

ts2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
              ON UPDATE CURRENT_TIMESTAMP);
1 голос
/ 12 января 2010

Не знаю, сработает ли это для вас, но вы всегда можете сделать его полем TIMESTAMP без значения по умолчанию - MySQL автоматически установит значение первого такого поля, определенного в таблице, на текущее отметка времени при каждом обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...