|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Хотелось бы сделать следующее: 1. Взять список юзерских триггеров, которые разрешены 2. Удалить все данные из базы 3. Вставить данные в базу из другой базы 4. Разрешить все триггеры. которые были взяты в пункте 1 Собственно, вопрос по пункту 1: как? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 18:27 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Ролг ХупинХотелось бы сделать следующее: 1. Взять список юзерских триггеров, которые разрешены 2. Удалить все данные из базы 3. Вставить данные в базу из другой базы 4. Разрешить все триггеры. которые были взяты в пункте 1 Собственно, вопрос по пункту 1: как? В 90% случаев достаточно для проводить всю процедуру оптом после set session_replication_role to replica; https://www.postgresql.org/docs/9.6/static/runtime-config-client.html#GUC-SESSION-REPLICATION-ROLE PS: Код: plaintext 1. 2. 3.
-- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 19:14 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Ролг ХупинХотелось бы сделать следующее: 1. Взять список юзерских триггеров, которые разрешены 2. Удалить все данные из базы 3. Вставить данные в базу из другой базы 4. Разрешить все триггеры. которые были взяты в пункте 1 Собственно, вопрос по пункту 1: как? начать с того, что у триггера не 2 состояния, а несколько больше*** после вашей сманипуляции enable always триггера, которые могут вам быть нужны для обработки и своих событий и событий репликации окажутся в обычном ("origin") состоянии и вас придётся убить апстену и грязно надругаццо над телом. без особой надежды восстановить логическую связность распределенной системы. если же таковых связей нет -- пользуйтесь рекомендацией Максима. ***вообще говоря это тянет на ошибку проектирования. enable/disable должен быть 2-х состоятельным. а вот R/O/A --должно хранить конечное назначение независимо от порывов порывистого дба. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2017, 20:05 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Спасибо за развернутые ответы, но есть одно НО: речь про PostgreSQL репликацию не идет. Я буду вливать данные из базы MS SQL Server, одноразовая, в общем, операция для конкретной базы. Приложением c#. Вот я и хотел отрубить активные триггеры, вкинуть данные и затем разраешить те, которые были разрешены. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:11 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Ролг ХупинСпасибо за развернутые ответы, но есть одно НО: речь про PostgreSQL репликацию не идет. Я буду вливать данные из базы MS SQL Server, одноразовая, в общем, операция для конкретной базы. Приложением c#. Вот я и хотел отрубить активные триггеры, вкинуть данные и затем разраешить те, которые были разрешены. А причем тут репликация? session_replication_role = 'replica' отключает в сессии отработку всех триггеров кроме тех которые обьявлены как always (у вас таких нет иначе бы вы такие вопросы не задавали). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:36 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Maxim BogukРолг ХупинСпасибо за развернутые ответы, но есть одно НО: речь про PostgreSQL репликацию не идет. Я буду вливать данные из базы MS SQL Server, одноразовая, в общем, операция для конкретной базы. Приложением c#. Вот я и хотел отрубить активные триггеры, вкинуть данные и затем разраешить те, которые были разрешены. А причем тут репликация? session_replication_role = 'replica' отключает в сессии отработку всех триггеров кроме тех которые обьявлены как always (у вас таких нет иначе бы вы такие вопросы не задавали). ок, теперь дошло ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:42 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Maxim Boguk <> А причем тут репликация? session_replication_role = 'replica' отключает в сессии отработку всех триггеров кроме тех которые обьявлены как always (у вас таких нет иначе бы вы такие вопросы не задавали). поправляю: "...кроме тех которые обьявлены как always AND Replica" авторtgenabled char Controls in which session_replication_role modes the trigger fires. O = trigger fires in "origin" and "local" modes, D = trigger is disabled, R = trigger fires in "replica" mode, A = trigger fires always. т.е. лучшим способом обойти одни только ориджин-триггеры -- вливать под session_replication_role = 'replica' а вот от пользования дизейбл/енейбл крыжиками, или от дизейбл списком, происходит полная потеря назначения A/R триггеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 13:55 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Maxim BogukРолг ХупинСпасибо за развернутые ответы, но есть одно НО: речь про PostgreSQL репликацию не идет. Я буду вливать данные из базы MS SQL Server, одноразовая, в общем, операция для конкретной базы. Приложением c#. Вот я и хотел отрубить активные триггеры, вкинуть данные и затем разраешить те, которые были разрешены. А причем тут репликация? session_replication_role = 'replica' отключает в сессии отработку всех триггеров кроме тех которые обьявлены как always (у вас таких нет иначе бы вы такие вопросы не задавали). а вот как бы еще отключить связи по PK->FK и после вставки данных включить? порядок вставки данных в таблицы не соответствует их связям и получаю ошибки типа insert or update on table "profile_1" violates foreign key constraint "fk_profile_1_profile_2" ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 14:05 |
|
Как взять список триггеров?
|
|||
---|---|---|---|
#18+
Ролг ХупинMaxim Bogukпропущено... А причем тут репликация? session_replication_role = 'replica' отключает в сессии отработку всех триггеров кроме тех которые обьявлены как always (у вас таких нет иначе бы вы такие вопросы не задавали). а вот как бы еще отключить связи по PK->FK и после вставки данных включить? порядок вставки данных в таблицы не соответствует их связям и получаю ошибки типа insert or update on table "profile_1" violates foreign key constraint "fk_profile_1_profile_2" Так и FK триггера тоже отключаются при session_replication_role = 'replica' другой вопрос что проверки потом никакой не будет и если вы зальете данные с нарушением FK - они там и останутся. -- Maxim Boguk dataegret.ru - лучшая русскоязычная поддержка PostgreSQL ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2017, 14:12 |
|
|
start [/forum/topic.php?fid=53&fpage=68&tid=1996303]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 286ms |
total: | 424ms |
0 / 0 |