Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
30.09.2016, 10:34
|
|||
|---|---|---|---|
каскадный тригер |
|||
|
#18+
добрый день, есть тригер который разруливает партиции вместо update делаем делет + инсерт (в инсерте есть тригер который срабатывает при replica, и он распихивает по партициям) необходимо что бы на делет были отключены все каскадные тригеры: изначально было так: Код: sql 1. 2. 3. 4. 5. но теперь появились еще тригеры на insert которые тоже должны выполнятся, т.е. необходимо session_replication_role TO 'replica'; сделать только на delete, в котором есть свои тригеры before/after которые должны срабатывать только когда реально идет удаление записи. подскажите какие идеи есть у вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.09.2016, 10:46
|
|||
|---|---|---|---|
каскадный тригер |
|||
|
#18+
мое видение пока такое, но может есть проще: добавить в таблицу еще одно поле sign_del (там либо null всегда будет либо в момент выполнения мы можем записать false) на пермо выполняющем тригере при изменении сделать запись Код: sql 1. при делете в первом тригере проверяем если old.sign_del = false то ставим Код: sql 1. на последнем тригере в делет (который будет выполнятся и при реплики) ставим Код: sql 1. из тригера на инсерт убрать полностью установки session_replication_role, оставить только это: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.09.2016, 15:22
|
|||
|---|---|---|---|
каскадный тригер |
|||
|
#18+
нашел очень простое решение, правок минимум, простота работы-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
30.09.2016, 16:26
|
|||
|---|---|---|---|
|
|||
каскадный тригер |
|||
|
#18+
Legushkaдобрый день, есть тригер который разруливает партиции вместо update делаем делет + инсерт (в инсерте есть тригер который срабатывает при replica, и он распихивает по партициям) необходимо что бы на делет были отключены все каскадные тригеры: изначально было так: Код: sql 1. 2. 3. 4. 5. но теперь появились еще тригеры на insert которые тоже должны выполнятся, т.е. необходимо session_replication_role TO 'replica'; сделать только на delete, в котором есть свои тригеры before/after которые должны срабатывать только когда реально идет удаление записи. подскажите какие идеи есть у вас? Что то вы ОЧЕНЬ странное делаете. Динамическое управление session_replication_role в приложении крайне дурная идея. Для начала SET session_replication_role TO 'replica'; отключает незаметно для базы проверку всех FK при операциях. Ну и вообще очень странное решение для партиционирования. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=1996974]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 138ms |

| 0 / 0 |
