powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление из связанных таблиц
5 сообщений из 5, страница 1 из 1
Удаление из связанных таблиц
    #37538466
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Суть вопроса в следующем.

Есть табличка с платежами (payment_doc).
В ней хранятся суммы платежей и остатков от него(payment_sum,payment_rest) клиента. Изначально они равны.
Платежами закрываются разные начисления,соответстенно остаток от платежа уменьшается или увеличивается (если надо отменить закрытие). Данные об этих телодвижениях ложаться в табличку billpayment(поле bp_payment_sum).
На billpayment висят триггера, которые отслеживают баланс клиента, меняя его в зависимости от операции и меняя остаток от платежа payment_rest в payment_doc. Проблема возникает, когда надо полностью удалить платеж!

Надо удалить и строку из payment_doc и все, что связано с этим платежом в billpayment с корректной отработкой баланса клиента.
Висел триггер на удаление для payment_doc в котором удалялся billpayment, но понятно, что он натыкается на рекурсию.
Rule на удаление не действует.
Как вариант - хранить остаток payment_rest в отдельной табличке?
Как быть?
...
Рейтинг: 0 / 0
Удаление из связанных таблиц
    #37538696
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю, что схема примерно следующая.

Платеж -> Сопоставление <- Начисление

Т.е. есть две отдельные таблицы: Платежи и Начисления и дополнительная таблица-посредник, которая связывает эти две таблицы.

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

Другими словами, разрешать удалять платеж, если на него нет ни одной ссылки в таблице сопоставлений. Тогда рекурсии не появится.
...
Рейтинг: 0 / 0
Удаление из связанных таблиц
    #37538747
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, так оно и было, точнее есть.
В триггере на удаление платежа стоит проверка: - есть операциии с этим платежом, никаких корректировок.
Только в случае отката покрытий, когда payment_sum = payment_rest платеж можно было удалить.
Но фишка в том, что платежей много и импортируются они из клиент-банка.
Оператор накуролесил с покрытием начислений и ручками откатывать каждый платеж...
Поэтому хотелось бы предусмотреть возможность групповых операций.
Типа - откатить платежи за такой-то период. Видимо придется - таки к табличке payment_doc вязать дополнительную.
Не Оракловые триггеры, не Оракловые.... :(
Вы как выходите из положения?
...
Рейтинг: 0 / 0
Удаление из связанных таблиц
    #37538975
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если опустить тот факт, что Вы ищите себе ну очень большие приключения, то кто Вам мешает, собственно, сначала отменить все сопоставления за определенный период, а потом поудалять все платежи в этом же периоде?

Не надо бизнес-логику "зашивать" в структуру базы данных. Ничего хорошего из этого не выйдет.

Если "по правильному", то как поштучно накуролесил, так пускай поштучно и разбирается. В следующий раз будет внимательнее. А то, что Вы хотите сделать, так это нажал кнопочку и программист крайний. Как Вы докажите, что пользователь что-то там делал. Все ведь удалилось. С деньгами поосторожнее надо как-то.
...
Рейтинг: 0 / 0
Удаление из связанных таблиц
    #37539204
miv32
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо все взвесить...
Собственно кнопку кроме меня пока никто не нажмет, ибо пункт меню недоступен будет кому ни попадя. Да и сейчас по принципу payment_sum <> payment_rest кнопка "Удалить" залочена.
Зачем лишний раз триггера напрягать... :)
Спасибо. :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление из связанных таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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