Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Есть две таблицы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Код: plaintext 1. 2. 3. 4. 5. При удалении записи из таблицы ex_pit_transactions удаляются соответствующие записи в таблице commission_ex_pit_tran, что вызывает срабатывание триггерной процедуры recalc_money_balance(). Но в контексте этой процедуры уже нет записи в таблице ex_pit_transactions. Можно как-нибудь добиться , что бы в контексте процедуры recalc_money_balance() запись в таблице ex_pit_transactions еще была? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:13 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ruЕсть две таблицы: ... Перед удалением записи в таблице commission_ex_pit_tran срабатывает триггер Код: plaintext 1. 2. 3. 4. 5. При удалении записи из таблицы ex_pit_transactions удаляются соответствующие записи в таблице commission_ex_pit_tran, что вызывает срабатывание триггерной процедуры recalc_money_balance(). Но в контексте этой процедуры уже нет записи в таблице ex_pit_transactions. Можно как-нибудь добиться , что бы в контексте процедуры recalc_money_balance() запись в таблице ex_pit_transactions еще была? В принципе - это один из спорных моментов в СУБД в принципе. И в разных СУБД реализован по разному, от мутаций Оракла до дедлоков в какой-то из фриварных. Я где-то с год назад бросал в рассылку Постгреса багу (точнее не соответсвие SQL стандарту) на схожую тему. Но, то ли мой аглицкий не силен, или просто no comments. Я бы посоветовал удаляемые записи из ex_pit_transactions вносить в времянку, и потом уже анализировать в recalc_money_balance(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:22 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Ну, если другого способа нет, то придется :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:36 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron msa@n-e.ruЕсть две таблицы: ... Перед удалением записи в таблице commission_ex_pit_tran срабатывает триггер Код: plaintext 1. 2. 3. 4. 5. При удалении записи из таблицы ex_pit_transactions удаляются соответствующие записи в таблице commission_ex_pit_tran, что вызывает срабатывание триггерной процедуры recalc_money_balance(). Но в контексте этой процедуры уже нет записи в таблице ex_pit_transactions. Можно как-нибудь добиться , что бы в контексте процедуры recalc_money_balance() запись в таблице ex_pit_transactions еще была? В принципе - это один из спорных моментов в СУБД в принципе. И в разных СУБД реализован по разному, от мутаций Оракла до дедлоков в какой-то из фриварных. Я где-то с год назад бросал в рассылку Постгреса багу (точнее не соответсвие SQL стандарту) на схожую тему. Но, то ли мой аглицкий не силен, или просто no comments. Я бы посоветовал удаляемые записи из ex_pit_transactions вносить в времянку, и потом уже анализировать в recalc_money_balance(). Вообще, конечно, странно почему перед удалением записи в дочерней таблице в родительской уже нет записи. А параметры первичного/вторичного ключей типа deferrable не помогут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 12:39 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Можно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:17 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
JelisМожно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. А рекурсии тут не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:32 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ru JelisМожно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. А рекурсии тут не будет? А от куда? У вас что ли в триггере на commission_ex_pit_tran удаляються записи из commission_ex_pit_tran? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:35 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Jelis msa@n-e.ru JelisМожно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. А рекурсии тут не будет? А от куда? У вас что ли в триггере на commission_ex_pit_tran удаляються записи из commission_ex_pit_tran? Нет! У меня в триггере ничего не удаляется, а вот у вас в правиле на удаление идет удаление из этой же таблицы! Это не рекурсия разве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:36 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Jelis msa@n-e.ru JelisМожно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. А рекурсии тут не будет? А от куда? У вас что ли в триггере на commission_ex_pit_tran удаляються записи из commission_ex_pit_tran? А... немного описался... У вас что ли в триггере на commission_ex_pit_tran удаляються записи из ex_pit_transactions? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:39 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Jelis Jelis msa@n-e.ru JelisМожно попробовать так... Убрать cascade на ex_pit_transactions и сделать либо представление с rule, либо просто для таблицы rule на удаление, в котором сначала удалять запись из commission_ex_pit_tran а уже потом из ex_pit_transactions. Код: plaintext 1. 2. 3. 4. 5. 6. 7. А рекурсии тут не будет? А от куда? У вас что ли в триггере на commission_ex_pit_tran удаляються записи из commission_ex_pit_tran? А... немного описался... У вас что ли в триггере на commission_ex_pit_tran удаляються записи из ex_pit_transactions? Да нет же! Ни в одном из триггеров ничего не удаляется. У вас в правиле на удаление делается удаление из той же таблицы! Постгрес ругается ERROR: обнаружена бесконечная рекурсия в правилах для отношения "ex_pit_transactions" пр и выполнении запроса delete from ex_pit_transactions where id=46 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:41 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Меня спасло правило Код: plaintext 1. 2. 3. В этом случае, он сначало выполняет удаление из commission_ex_pit_tran, а уже потом из ex_pit_transactions ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:45 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
Вам, Jelis , отдельное спасибо за подсказку :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 13:46 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
msa@n-e.ruДа нет же! Ни в одном из триггеров ничего не удаляется. У вас в правиле на удаление делается удаление из той же таблицы! Постгрес ругается ERROR: обнаружена бесконечная рекурсия в правилах для отношения "ex_pit_transactions" пр и выполнении запроса delete from ex_pit_transactions where id=46 В самом деле ругаеться.... Просто я обычно рулесы на представления создаю, а таблицы оставляю "чистыми", и с представлениями, понятное дело, таких проблемм нет. msa@n-e.ru Вам, Jelis , отдельное спасибо за подсказку :-) Наздоровье :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2007, 14:33 |
|
||
|
Каскадное удаление
|
|||
|---|---|---|---|
|
#18+
как известно, пк, чеки и фк в постгре есть "попросту" CONSTRAINT TRIGGER-а. (на сишных триггерных ф-ях) т.ч.видимо там собака порылась читаем Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. т.ч. видимо это надо принять как данность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2007, 11:26 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34330166&tid=2005413]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 384ms |

| 0 / 0 |
