Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
каскадный тригер
|
|||
|---|---|---|---|
|
#18+
добрый день, есть тригер который разруливает партиции вместо update делаем делет + инсерт (в инсерте есть тригер который срабатывает при replica, и он распихивает по партициям) необходимо что бы на делет были отключены все каскадные тригеры: изначально было так: Код: sql 1. 2. 3. 4. 5. но теперь появились еще тригеры на insert которые тоже должны выполнятся, т.е. необходимо session_replication_role TO 'replica'; сделать только на delete, в котором есть свои тригеры before/after которые должны срабатывать только когда реально идет удаление записи. подскажите какие идеи есть у вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 10:34 |
|
||
|
каскадный тригер
|
|||
|---|---|---|---|
|
#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, 10:46 |
|
||
|
каскадный тригер
|
|||
|---|---|---|---|
|
#18+
нашел очень простое решение, правок минимум, простота работы-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 15:22 |
|
||
|
каскадный тригер
|
|||
|---|---|---|---|
|
#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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2016, 16:26 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39318829&tid=1996974]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 304ms |
| total: | 573ms |

| 0 / 0 |
