Как не отправить в базу данных, а выбрать измененные данные
У меня есть база данных с несколькими таблицами
и пользователь может изменить данные в таблице.
у меня проблемы в том, что я ничего не изменяю в базе данных, пока пользователь не нажмет кнопку "сохранить", и даже когда он это сделает - он отправит только таблицу, которую он решит сохранить
но в то же время необходимо, чтобы пользователь мог видеть все изменения, которые он сделал. и каждый "выбор" должен дать ему измененные данные, а не базовые данные.
как я могу с одной стороны не передавать данные в базу данных, а с другой стороны показывать данные, измененные пользователю?
Я думал сделать транзакцию и не отправлять (и использовать чтение незафиксированным), но для этого я не должен закрывать соединение (если я закрываю без отправки - все изменения отменяются), и я не оставляю несколько соединения открыты.
Я также думал создать список всех изменений, и всякий раз, когда пользователь делает выбор - сначала поиск из списка. но это очень сложно, и я предпочитаю простое решение
Спасибо
2 ответа
Это будет очень сложно, поскольку вы настаивали на том, что вы не можете использовать транзакции.
Лучшее, что я могу предложить, - это добавить столбцы в каждую таблицу, чтобы представить состояние, но даже тогда будет сложно определить, как пользователь A видит предварительное изменение, а пользователь B - сообщение, но еще не зафиксировал.
Возможно, вы могли бы взглянуть на использование двух таблиц и иметь представление о выборе подходящих данных из обеих в зависимости от требований.
В любом случае, это неприятный способ и не очень эффективный.
В тот момент, когда вы настаивали на том, что не можете использовать транзакцию, вы упускаете шанс получить простой ответ.
Временная таблица здесь не поможет (как предложено выше), так как она связана с соединением, которое, как вы заявляете, будет закрыто. Единственное альтернативное решение для временных таблиц - это глобальная временная таблица, но это также приводит к проблемам (кто ее создает, что, если вы используете последнее соединение, проверьте, существует ли оно и т. Д.)
Вы можете использовать временные таблицы для хранения временных данных, а затем перемещать их по мере необходимости.