
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.01.2004, 08:40
|
|||
|---|---|---|---|
|
|||
Давайте обсудим откат изменений |
|||
|
#18+
Есть следующая идея - сделать в базе откат последнего действия, система построена на 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.Соответсвенно пишем и процедуру отмены - в одну и другую сторону на любое количество времени с пакетным проходом по записям, или просто вычислением нужного значения. А пугает следующее - если есть отмена отмены на любом отрезе времени, то возможно в конечном итоге ветвление, можно конечно и это контролировать. Второе - не закопаюсь ли в пакетных операциях по нескольким таблицам. Треть - времени наверное займет немеряно для реализации ентого на живой базе :( Прошу прощение что так много писал, но уж больно понравилась сама идея. Жду мнений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.01.2004, 10:45
|
|||
|---|---|---|---|
Давайте обсудим откат изменений |
|||
|
#18+
если все делаешь в одном коннекшене с транзакцией то не пойму в чем проблема. проблема может быть только в блокировках для других юзеров в связи с долгосрочной транзакцией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.01.2004, 11:13
|
|||
|---|---|---|---|
Давайте обсудим откат изменений |
|||
|
#18+
4. Ну а дальше пишем процедуры (с триггерами скорее всего не получится :( ) которые при любом контролируемом действии пишет что сделали, если удалили - пометили невидимой, обновили - создаем копию, а предыдущую запись помечаем невидимой (т.е две ссылки) ну и т.д. Интересно а почему с триггерами не получится - у меня работает (правда требования немного другие но все же). Писать лог в таблицы при любых действиях с записями - это как раз работа для триггеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.01.2004, 18:55
|
|||
|---|---|---|---|
|
|||
Давайте обсудим откат изменений |
|||
|
#18+
а как триггеру передать ID действия???? -в этом вс\я и загводка :(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.01.2004, 19:22
|
|||
|---|---|---|---|
Давайте обсудим откат изменений |
|||
|
#18+
Чего-то я наверное не понял. inserted - в триггере содержит набор добавляемых/изменяемых записей Разделить на добавляемые/изменяемые легко если связать с существующим набором по ключевым полям. Удаления в вашем случае нет, есть обновление поля- признака удаления, выделить эту операцию в триггере тоже легко. В чем тогда проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.01.2004, 16:05
|
|||
|---|---|---|---|
|
|||
Давайте обсудим откат изменений |
|||
|
#18+
Так нет, добавление то происходит в несколько таблиц (это во первых). а во вторых - сначала в отдельной таблице прописывается название самого действия, где и формируется его ID, которое нужно потом собственно передавать в триггеры в другие таблицы, где собственно и происходят сами действия. Можно конечно читать последнюю добавленную запись по юзеру, но что если я под одним юзером с двух машин начну делать - такая ситуация не исключена. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&tablet=1&tid=1676923]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 272ms |
| total: | 416ms |

| 0 / 0 |
