MySQL: добавить созданные и измененные поля - PullRequest
5 голосов
/ 28 ноября 2009

Какой лучший подход для добавления созданных и измененных полей в MySQL:

1) с использованием функций MySQL, таких как on update CURRENT_TIMESTAMP или

2) используя PHP (или что-то еще)? Почему?

Если бы ответ был MySQL, как бы вы это сделали?

Ответы [ 2 ]

3 голосов
/ 28 ноября 2009

Это хороший вопрос. Я полагаю, вам нужно взглянуть на это с двух сторон

  • производительность
  • архитектура реализации

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

С точки зрения архитектуры реализации триггеры довольно просты, и в php, если у вас хорошая архитектура ORM (или вы используете что-то вроде Doctrine), вы можете перезаписать логику save () в абстрактном слое, чтобы всегда обновлять метки времени создания / изменения, когда Вы экономите.

Так что лично я реализовал бы это в PHP, если бы у меня был почти весь доступ к моей базе данных через ORM, а не через триггеры или хранимые процедуры.

0 голосов
/ 13 ноября 2013

Я предпочитаю изменить или добавить столбец в таблицу MySQL, например LastChanged, с типом TIMESTAMP и значением по умолчанию CURRENT_TIMESTAMP. Поэтому при добавлении строки в таблицу автоматически генерируется дата.

Тогда у вас может быть триггер типа AFTER UPDATE, который обновит дату последнего изменения после изменения записи

    IF NEW.LastChanged = '0000-00-00 00:00:00' THEN
        SET NEW.LastChanged = NOW();
    END IF
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...