Добавление полей «created» и «updatedAt» в MySQL: методы и примеры

При управлении базами данных часто необходимо отслеживать временные метки создания и последнего обновления записей. Эта информация ценна для целей аудита, отчетности и анализа данных. В этой статье блога мы рассмотрим различные методы добавления полей «created» и «updatedAt» в MySQL, а также приведем примеры кода.

Метод 1: использование значений TIMESTAMP по умолчанию
Один простой подход — определить поля «created» и «updatedAt» как столбцы TIMESTAMP со значениями по умолчанию. В столбце «Создано» в качестве значения по умолчанию будет указана текущая временная метка, а в столбце «updatedAt» можно настроить автоматическое обновление при каждом обновлении записи.

CREATE TABLE your_table (
  id INT PRIMARY KEY AUTO_INCREMENT,
  created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

Метод 2: использование столбцов DATETIME с триггерами
Другой метод предполагает использование столбцов DATETIME и триггеров для явной установки значений полей «создано» и «обновлено». Триггеры — это объекты базы данных, которые автоматически выполняют определенные действия в ответ на определенные события (например, вставку или обновление записи).

CREATE TABLE your_table (
  id INT PRIMARY KEY AUTO_INCREMENT,
  created DATETIME,
  updatedAt DATETIME
);
CREATE TRIGGER set_created_time
BEFORE INSERT ON your_table
FOR EACH ROW
SET NEW.created = NOW();
CREATE TRIGGER set_updated_time
BEFORE UPDATE ON your_table
FOR EACH ROW
SET NEW.updatedAt = NOW();

Метод 3: использование выражений DEFAULT и виртуальных столбцов (MySQL 5.7+)
В MySQL 5.7 появилась поддержка виртуальных столбцов, которые представляют собой вычисляемые столбцы, значения которых извлекаются из выражений. Используя выражения DEFAULT и виртуальные столбцы, мы можем достичь желаемой функциональности.

CREATE TABLE your_table (
  id INT PRIMARY KEY AUTO_INCREMENT,
  created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updatedAt TIMESTAMP AS (CURRENT_TIMESTAMP) VIRTUAL
);

В этой статье мы рассмотрели три различных метода добавления полей «created» и «updatedAt» в MySQL. Каждый метод предлагает уникальный подход для достижения желаемой функциональности, что позволяет вам выбрать тот, который лучше всего соответствует вашим требованиям. Независимо от того, выберете ли вы значения по умолчанию, триггеры или виртуальные столбцы, отслеживание временных меток создания и обновления может значительно расширить ваши возможности управления базой данных.

Не забудьте адаптировать примеры кода к вашим конкретным именам таблиц и столбцов. Внедрение этих методов предоставит вам ценную информацию о ваших данных и позволит улучшить аудит и анализ.