Обновить столбец меток времени в приложении или базе данных? - PullRequest
2 голосов
/ 03 сентября 2011

У меня есть столбцы date_created и date_modified для каждой таблицы в базе данных.

Каковы преимущества / недостатки установки столбцов меток времени в базе данных с использованием триггеров MySQL по сравнению с их настройкой на уровне приложения с помощью PHP?

Какиепроще в обслуживании и имеет лучшую синхронизацию времени при развертывании на многих серверах?

РЕДАКТИРОВАТЬ: поскольку Йохан предложил устанавливать временные метки в базе данных, это правильные реализации?Кроме того, это хорошая практика, чтобы date_created и date_modified на каждой таблице?или вы рекомендуете добавлять их на определенные таблицы?

date_created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
date_modified TIMESTAMP NOT NULL DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP

Ответы [ 3 ]

2 голосов
/ 03 сентября 2011

Отметка времени в базе данных .

Если вы выполняете репликацию в настройке ведущий-ведомый, отметки времени базы данных корректно реплицируются (с использованием исходной отметки времени).

Вы делаетене (!) устанавливать временные метки в триггерах.

Вместо того, чтобы указывать их в определении таблицы, MySQL автоматически установит правильную метку времени при вставке и / или обновлении.
Вам нужно будет установить их только один раз, когда вы создаете (или изменяете) таблицу ивот и все.

Не может быть проще.

0 голосов
/ 03 сентября 2011

это хорошая практика, чтобы date_created и date_modified в каждой таблице?

Конечно.
Я бы добавил также date_deleted.

Обновить столбец отметки времени в приложении или базе данных?

Зависит от того, как вы планируете использовать эти поля.
Если это какая-то статья и вы хотите показать время последнего редактирования, вам никогда не следует использовать функции отметки времени mysql.так как это приведет к неожиданным результатам, таким как время обновления во всех записях в базе данных.

То же самое для триггера.
не ленитесь, установите это поле вручную.Вам это ничего не будет стоить, так как вы уже используете ORM для этого, не так ли?

0 голосов
/ 03 сентября 2011

Это ваше усмотрение относительно того, какие таблицы должны иметь столбцы меток времени. В нашей производственной среде каждая таблица имеет эти столбцы.

Однако мы также устанавливаем значения в коде. Я считаю, что это было сделано для того, чтобы даты были под полным контролем приложения. Знайте, что в любом случае, репликация будет в порядке. Если вы устанавливаете даты в приложении и хотите, чтобы время сервера БД вместо времени сервера приложений, просто установите столбцы, используя функцию MySQL NOW ().

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