Який найкращий підхід для додавання створених та модифікованих полів у MySQL:
1) використання таких функцій MySQL on update CURRENT_TIMESTAMP
або
2) за допомогою PHP (чи чогось іншого)? Чому?
Якщо відповідь - MySQL, як би ви це зробили?
Відповіді:
3 для відповіді № 1Це гарне запитання. Я гадаю, вам потрібно було б поглянути на це з двох аспектів
- продуктивність
- архітектура реалізації
З точки зору продуктивності, якщо ви вже єстворення рядка або оновлення рядка, а потім оновлення часової позначки на цьому рядку незначне, і тому я не думаю, що існує велика різниця між оновленням з php або через тригер.
З точки зору архітектури впровадженнятригери є досить простими і в межах php, якщо у вас є хороша архітектура ORM (або використовується щось на зразок Doctrine), ви можете перезаписати свою логіку save () в абстрактний шар, щоб завжди оновлювати створення / модифіковані часові позначки при збереженні.
Тож особисто я би реалізував це в PHP, якщо у мене в основному є весь доступ до моєї бази даних через ORM, а не через тригери чи збережені програми.
0 для відповіді № 2
Моя перевага - змінити або додати стовпчик до свогоТаблиця MySQL, як LastChanged, з типом TIMESTAMP і значенням за замовчуванням як CURRENT_TIMESTAMP. Отже, коли рядок додається до таблиці, дата автоматично генерується.
Тоді ви можете мати тригер у форматі ПІСЛЯ ОНОВЛЕННЯ, який оновить останню змінену дату, коли запис буде змінено
IF NEW.LastChanged = "0000-00-00 00:00:00" THEN
SET NEW.LastChanged = NOW();
END IF