mysql — ведение таблицы истории для PHP-приложения

Я хочу сохранить таблицу истории для моего приложения, чтобы отслеживать, что все поля были изменены пользователем.

Следующее мое bugs_history структура таблицы —

id, bugsid, userid, field_changed, old_value, new_value, created_on, created_by

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

Я много гуглил за это, но не получил по моим требованиям. Пожалуйста, дайте мне знать, как этого добиться.

1

Решение

Если вы знаете имена полей (у вас есть HTML-форма, содержащая их, так что вы, вероятно, знаете имена), то создайте список из них, который вы затем просматриваете, создавая новый SELECT запрос, чтобы получить old_value а затем INSERT запрос, чтобы сохранить его. Выбор будет заказать на created_on DESC а также LIMIT 1,

Но я вижу здесь ясную проблему: параллелизм. Что происходит, когда два пользователя пытаются редактировать одну и ту же ошибку (с одинаковыми bugsid) в то же время? Они ожидали бы old_value быть одинаковым для обоих? Или две операции должны выполняться последовательно? Или следует предупредить последнего редактирующего, что он пытается отредактировать устаревшие данные? Какой из них получит «последний» created_on?
Это ваша настоящая проблема, а не написание кода, который генерирует два SQL-запроса.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]