leosha
Старожил PHPCLub
Подобие транзакций
Потребовалось мне тут сделать некое подобие транзакций...
Первое что пришло на ум, такая вот, примерно, схема:
1) Пользователь начинает работу. Выдаем ему идентификатор UID.
ID всех записей, которые он делает в таблицы, заносим в таблицу TRANSACTION
с указанием этого ID, имя таблицы и UID.
2)На каждой странице делаем кнопки "Сохранить состояние" и "Откат".
3) При нажатии на "Сохранить" - очищаем таблицу TRANSACTION для данного UID.
После этого, откат невозможен. И таблицу TRANSACTION начинаем заполнять по новой..
4) При нажатии на "Откат" - читаем из TRANSACTION что там наделал данный UID,
строим запросы на удаление соответствующих записей, выполняем эти запросы,
опять же очищаем TRANSACTION, радостно извещаем юзера, что все что он сделал
с момента последнего нажатия на "Сохранить", мы уже удалили и он может начать по новой...
Гм. Схему пока нарисовал только в голове, и реализовывать как-то не тянет особо.
Глядя свежим взглядом, укажите, плз, на скользкие моменты.
И вообще, не сильно большой велосипед я изобретаю?
Мда. Скажите мне, почему не НАДО так делать.. =)
Потребовалось мне тут сделать некое подобие транзакций...
Первое что пришло на ум, такая вот, примерно, схема:
1) Пользователь начинает работу. Выдаем ему идентификатор UID.
ID всех записей, которые он делает в таблицы, заносим в таблицу TRANSACTION
с указанием этого ID, имя таблицы и UID.
2)На каждой странице делаем кнопки "Сохранить состояние" и "Откат".
3) При нажатии на "Сохранить" - очищаем таблицу TRANSACTION для данного UID.
После этого, откат невозможен. И таблицу TRANSACTION начинаем заполнять по новой..
4) При нажатии на "Откат" - читаем из TRANSACTION что там наделал данный UID,
строим запросы на удаление соответствующих записей, выполняем эти запросы,
опять же очищаем TRANSACTION, радостно извещаем юзера, что все что он сделал
с момента последнего нажатия на "Сохранить", мы уже удалили и он может начать по новой...
Гм. Схему пока нарисовал только в голове, и реализовывать как-то не тянет особо.
Глядя свежим взглядом, укажите, плз, на скользкие моменты.
И вообще, не сильно большой велосипед я изобретаю?
Мда. Скажите мне, почему не НАДО так делать.. =)