Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не получается сделать enable always trigger на instead of тригер на вьюхе / 11 сообщений из 11, страница 1 из 1
21.10.2016, 13:06
    #39331485
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
не работает
когда есть вьюха VIEW_TABLE
на ней есть instead of тригер VIEW_TABLE_insert_trigger;
не получается сделать enable always trigger, т.е. надо что бы при репликации этот тригер обязательно срабатывал.

так не работает
Код: sql
1.
alter table VIEW_TABLE enable always trigger VIEW_TABLE_insert_trigger; 

ERROR: "mc_case" is not a table or foreign table

Код: sql
1.
alter view VIEW_TABLE enable always trigger VIEW_TABLE_insert_trigger; 

ERROR: "mc_case" is not a table or foreign table

можно как нибудь это сделать?
...
Рейтинг: 0 / 0
21.10.2016, 13:33
    #39331515
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
Legushkaне работает
когда есть вьюха VIEW_TABLE
на ней есть instead of тригер VIEW_TABLE_insert_trigger;
не получается сделать enable always trigger, т.е. надо что бы при репликации этот тригер обязательно срабатывал.

так не работает
Код: sql
1.
alter table VIEW_TABLE enable always trigger VIEW_TABLE_insert_trigger; 

ERROR: "mc_case" is not a table or foreign table

Код: sql
1.
alter view VIEW_TABLE enable always trigger VIEW_TABLE_insert_trigger; 

ERROR: "mc_case" is not a table or foreign table

можно как нибудь это сделать?

Вы что то опять очень странное делаете/хотите.
ALWAYS триггера нужны для триггерной репликации типа slony/londiste а они таблицы реплицируют а не views.
Поэтому смысла в Instead of always триггере на реплике ровно ноль.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
21.10.2016, 14:18
    #39331568
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
Maxim Boguk, хочу странного-)
...
Рейтинг: 0 / 0
21.10.2016, 14:22
    #39331572
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
LegushkaMaxim Boguk, хочу странного-)

Для начала объясните что вы имеете в виду под "надо что бы при репликации этот тригер обязательно срабатывал".

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
21.10.2016, 14:34
    #39331588
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
Maxim Boguk


Вы что то опять очень странное делаете/хотите.
ALWAYS триггера нужны для триггерной репликации типа slony/londiste а они таблицы реплицируют а не views.
Поэтому смысла в Instead of always триггере на реплике ровно ноль.

--
Maxim Boguk
www.postgresql-consulting.ru
- Аполитично рассуждаешь, аполитично рассуждаешь, клянусь, честное слово! Не понимаешь политической ситуации! Ты жизнь видишь только из окна моего персонального автомобиля, клянусь, честное слово!

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

вообще--то поделиями типа лондайста и слонов жизнь не ограничивается. вот нашему товарисчу приспичило что--то дёрнуть в статусе "реплика" , а оно не дёргается -- какие--то долбодятлы за него всё решили. странно, что форейгн тейблы оставили. могли бы и их запретить. "непаложено", типа.

товарисч, отредактируйте на тесте таблицу pg_trigger руками (так делать никогда нельзя, кроме как в диверсионных целях)
https://www.postgresql.org/docs/9.5/static/catalog-pg-trigger.html
уроните тест нафик. и, если не уронется, а заработает -- задайте вопрос в пж-орге -- кому в голову стукнуло навязывать хождения строем.
заодно посмотрите --- оно действительно там только ориджин для вьюх, или как раз всегда олвейз.
...
Рейтинг: 0 / 0
21.10.2016, 14:48
    #39331613
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
qwwqMaxim Boguk


Вы что то опять очень странное делаете/хотите.
ALWAYS триггера нужны для триггерной репликации типа slony/londiste а они таблицы реплицируют а не views.
Поэтому смысла в Instead of always триггере на реплике ровно ноль.

--
Maxim Boguk
www.postgresql-consulting.ru
- Аполитично рассуждаешь, аполитично рассуждаешь, клянусь, честное слово! Не понимаешь политической ситуации! Ты жизнь видишь только из окна моего персонального автомобиля, клянусь, честное слово!

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

вообще--то поделиями типа лондайста и слонов жизнь не ограничивается. вот нашему товарисчу приспичило что--то дёрнуть в статусе "реплика" , а оно не дёргается -- какие--то долбодятлы за него всё решили. странно, что форейгн тейблы оставили. могли бы и их запретить. "непаложено", типа.

товарисч, отредактируйте на тесте таблицу pg_trigger руками (так делать никогда нельзя, кроме как в диверсионных целях)
https://www.postgresql.org/docs/9.5/static/catalog-pg-trigger.html
уроните тест нафик. и, если не уронется, а заработает -- задайте вопрос в пж-орге -- кому в голову стукнуло навязывать хождения строем.
заодно посмотрите --- оно действительно там только ориджин для вьюх, или как раз всегда олвейз.

Ну вообще 99% что хождение строем получилось потому что когда делали INSTEAD OF триггера об этом не подумали.
100% аналогично вот этому багу (и тоже про instead of на view): https://www.postgresql.org/message-id/flat/CAJrrPGdfcr3wr42g7SKN1DvuEyPfxBgX06DiyntBcgsK=E5r_Q@mail.gmail.com#CAJrrPGdfcr3wr42g7SKN1DvuEyPfxBgX06DiyntBcgsK=E5r_Q@mail.gmail.com]https://www.postgresql.org/message-id/flat/CAJrrPGdfcr3wr42g7SKN1DvuEyPfxBgX06DiyntBcgsK=E5r_Q@mail.gmail.com#CAJrrPGdfcr3wr42g7SKN1DvuEyPfxBgX06DiyntBcgsK=E5r_Q@mail.gmail.com
Кстати правку в 3 строки по этому багу так и не закоммитили (никому нафиг не надо походу).

Т.е. не то чтобы что то мешает просто в IF забыли конструкцию добавить.


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
21.10.2016, 14:48
    #39331615
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
qwwq, спасибо
update pg_trigger set tgenabled = 'A' where tgname = 'блаблабла'
сработал, сейачс проверю на деле что выходит. дейстивтельно ли будет always
...
Рейтинг: 0 / 0
21.10.2016, 15:13
    #39331657
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
qwwq, не работает
на тригере проапдейтил поле на 'A' т.е. вьючный тригер должен работать всгда
но как только в тригерной функции срабатывает
SET session_replication_role TO 'replica'; перестает выполнятся наш вьючный тригер
никакого апдейта в итоге не происходит
...
Рейтинг: 0 / 0
21.10.2016, 15:48
    #39331712
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
Legushkaqwwq, не работает
на тригере проапдейтил поле на 'A' т.е. вьючный тригер должен работать всгда
но как только в тригерной функции срабатывает
SET session_replication_role TO 'replica'; перестает выполнятся наш вьючный тригер
никакого апдейта в итоге не происходит
это хорошо, что не работает.
соблазна не будет сломать нефритовый стержынь на продакшыне
руки целее. ага.


а вообще--то в боевом коде писать сет роль ту реплика, да в хранимке, а не в клиенте -- это нездоровые какие--то наклонности. в клиенте -- реплицирующем воркере -- это допустимо, поскольку это и есть бэкдор для реплицирующих клиентов. там оно оттестировано слонпми ии лондайстами. а вот смена роли в хранимке по ходу сессии -- есть сильное подозрение, что оно не настолько бесшовно продумано, чтобы это было без багов. авторы то те же, что и для транзакционного ддл, который течёт по уровням изоляции. т.е. балбесы, не лучше нас.
...
Рейтинг: 0 / 0
21.10.2016, 17:21
    #39331818
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
qwwq, в общем создать отдельную функцию и в ней делать все что пожелается с session_replication_role и таблицами
запускать эту функцию из нашего инстеад оф тригера
главное что бы в подфункции на выходе было session_replication_role = origin и тогда наш тригер не отлкючается
...
Рейтинг: 0 / 0
21.10.2016, 17:22
    #39331821
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не получается сделать enable always trigger на instead of тригер на вьюхе
Legushkaqwwq, в общем создать отдельную функцию и в ней делать все что пожелается с session_replication_role и таблицами
запускать эту функцию из нашей инстеад оф тригерной функции
главное что бы в подфункции на выходе было session_replication_role = origin и тогда наша тригерная функция не отлкючаетсяпоправил
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не получается сделать enable always trigger на instead of тригер на вьюхе / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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