Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Давайте обсудим откат изменений / 6 сообщений из 6, страница 1 из 1
28.01.2004, 08:40
    #32389987
Журомский Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
Есть следующая идея - сделать в базе откат последнего действия, система построена на AccessXP + SQL2000. Пока DAO+ADO+ODBC, плавный переход на второе, ну а потом на ADP. Исходники под 40мег, поэтому одним махом не получается. Так вот, действия могут быть следующими:
1.Добавили одну запись, Удалили запись, Обновили запись;
2.Тоже самое на пакет операций по отношению к одной таблице;
3.Имеем транзакцию с последовательным (созданием, удалением , обновлением) взаимосвязанных записей в нескольких таблицах
4. И самое сложное - это 3 пункт но к пакетным операцием. т.е. например (нажал кнопку. она создала 100 счетов, заполнила их содержимым, по ним 100 накладных)

Были мысли в лоб, но потом
1. переименовываем на сервере таблицы, добавляем у них поле Visible (По умолчанию True), создаем на сервере View, где Visible = True, их и цепляем к клиенту.
2. Создаем таблиц tAction c дополнительными полями (как кому хочется, но главное - время и тип действия, ну и кто конечно)
3/ Создаем таблицу tActionInside. где имеем привязку к Action, но просто перечисляем коды записей и названия таблиц, с которыми делали действие.
4. Ну а дальше пишем процедуры (с триггерами скорее всего не получится :( )
которые при любом контролируемом действии пишет что сделали, если удалили - пометили невидимой, обновили - создаем копию, а предыдущую запись помечаем невидимой (т.е две ссылки) ну и т.д.
5.Соответсвенно пишем и процедуру отмены - в одну и другую сторону на любое количество времени с пакетным проходом по записям, или просто вычислением нужного значения.

А пугает следующее - если есть отмена отмены на любом отрезе времени, то возможно в конечном итоге ветвление, можно конечно и это контролировать.
Второе - не закопаюсь ли в пакетных операциях по нескольким таблицам.
Треть - времени наверное займет немеряно для реализации ентого на живой базе :(

Прошу прощение что так много писал, но уж больно понравилась сама идея. Жду мнений.
...
Рейтинг: 0 / 0
28.01.2004, 10:45
    #32390204
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
если все делаешь в одном коннекшене с транзакцией то не пойму в чем проблема.

проблема может быть только в блокировках для других юзеров в связи с долгосрочной транзакцией.
...
Рейтинг: 0 / 0
28.01.2004, 11:13
    #32390278
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
4. Ну а дальше пишем процедуры (с триггерами скорее всего не получится :( )
которые при любом контролируемом действии пишет что сделали, если удалили - пометили невидимой, обновили - создаем копию, а предыдущую запись помечаем невидимой (т.е две ссылки) ну и т.д.


Интересно а почему с триггерами не получится - у меня работает (правда требования немного другие но все же).

Писать лог в таблицы при любых действиях с записями - это как раз работа для триггеров.
...
Рейтинг: 0 / 0
28.01.2004, 18:55
    #32391480
Журомский Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
а как триггеру передать ID действия???? -в этом вс\я и загводка :((
...
Рейтинг: 0 / 0
28.01.2004, 19:22
    #32391508
incold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
Чего-то я наверное не понял.

inserted - в триггере содержит набор добавляемых/изменяемых записей

Разделить на добавляемые/изменяемые легко если связать с существующим набором по ключевым полям.

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

В чем тогда проблема?
...
Рейтинг: 0 / 0
30.01.2004, 16:05
    #32394009
Журомский Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Давайте обсудим откат изменений
Так нет, добавление то происходит в несколько таблиц (это во первых). а во вторых - сначала в отдельной таблице прописывается название самого действия, где и формируется его ID, которое нужно потом собственно передавать в триггеры в другие таблицы, где собственно и происходят сами действия. Можно конечно читать последнюю добавленную запись по юзеру, но что если я под одним юзером с двух машин начну делать - такая ситуация не исключена.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Давайте обсудим откат изменений / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]