Mysql ON UPDATE CURRENT_TIMESTAMP против триггера, который устанавливает время now () после обновления - PullRequest
0 голосов
/ 28 марта 2019

При поиске чего-то другого, я нашел этот триггер в нашей тестовой базе данных:

begin
     set NEW.UpdatedAt = now();
end

Я озадачен ... Чем это отличается от изменения определения столбца на следующее?

alter table TableName change UpdatedAt ON UPDATE CURRENT_TIMESTAMP;

Есть ли какие-либо преимущества, которые я не собираюсь делать в триггере?

1 Ответ

1 голос
/ 28 марта 2019

Для более ранних версий MySQL ON UPDATE был доступен только для столбцов типа данных TIMESTAMP. Эта функциональность не поддерживается для DATETIME или любых других типов данных.

И с TIMESTAMP столбцами может быть довольно сложно получить таблицу, определенную двумя TIMESTAMP столбцами, которые будут автоматически установлены; чтобы получить NOW(), назначенный одному столбцу при вставке строки, и получить NOW(), назначенный другому столбцу при обновлении строки.

Триггеры могут обойти эти ограничения.

...