powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / не получается сделать enable always trigger на instead of тригер на вьюхе
11 сообщений из 11, страница 1 из 1
не получается сделать enable always trigger на instead of тригер на вьюхе
    #39331485
Фотография 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

можно как нибудь это сделать?
...
Рейтинг: 0 / 0
не получается сделать enable always trigger на instead of тригер на вьюхе
    #39331515
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
не получается сделать enable always trigger на instead of тригер на вьюхе
    #39331568
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk, хочу странного-)
...
Рейтинг: 0 / 0
не получается сделать enable always trigger на instead of тригер на вьюхе
    #39331572
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LegushkaMaxim Boguk, хочу странного-)

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

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


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


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