powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли заблокировать на время триггер?
13 сообщений из 13, страница 1 из 1
Можно ли заблокировать на время триггер?
    #33488900
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно вопрос:
можно ли заблокировать триггер, выполнить определенную операцию, а затем опять восстановить триггер?
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33489026
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. док на тему alter table disable trigger
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33489125
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_sergсм. док на тему alter table disable trigger

Походу это появилось с 8-ой версии...
я попробую обновлять pg_trigger.tgenabled
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33491589
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй это

Это убрать все триггеры
UPDATE pg_class SET reltriggers = 0 WHERE relname = 'my_table';

Это восстановить обратно
UPDATE pg_class SET reltriggers=(SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid) WHERE relname = 'my_table';
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33491723
Opilki_Inside
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HordiПопробуй это

Это убрать все триггеры
UPDATE pg_class SET reltriggers = 0 WHERE relname = 'my_table';

Это восстановить обратно
UPDATE pg_class SET reltriggers=(SELECT count(*) FROM pg_trigger WHERE pg_class.oid = tgrelid) WHERE relname = 'my_table';

Спасибо! На самом деле я имеено так в итоге и сделал :)

а pg_trigger.tgenabled не помогло... вобще странный глюк был... в psql и pgAdmin все работало - т.е. тригеер блокировался и разблокировался... а из программы почему-то этого не происходило, хотя все они работают через одну и ту же libpq
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33492054
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чего проще - завести табличку статусов и сделать триггер(ы) статусозависимым(и). Если конечно это не разовая задачка. И не надо непродуманного насилия над системой.
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33492240
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321чего проще - завести табличку статусов и сделать триггер(ы) статусозависимым(и). Если конечно это не разовая задачка. И не надо непродуманного насилия над системой.
Это как? Из триггера запрос вызывать по другой таблице? У меня записи сотнями тысяч за раз могут изменяться - медленно получится.
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33492347
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hordi У меня записи сотнями тысяч за раз могут изменяться - медленно получится.кто вам сказал, что для того , чтобы 100 000 раз узнать одну (и ту же величину) надо 100 000 раз ее прочитать с диска? Напишите стей-бл* ф-ю, в канце-канцов - внутри одного прохода она не должна буит перезапрашиваца.

Канешна сам расход просто на 100 000 входов даже в тут же выплевывающую процедуру накладен. да. В этом случае отключить триггер имеет смысл. не возражаю. Но не уверен, что аффтырское "выполнить определенную операцию" это именно заливка данных в обход позаписных триггеров (кстати, а как там дело с постейтментными триггерами и INSERTED/DELETED ? не предполагается в дальнейшем?).
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33492769
Hordi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Напишите стей-бл* ф-ю, в канце-канцов - внутри одного прохода она не должна буит перезапрашиваца.

Она не будет перевыполняться только в случае когда ей передается один и тот же параметр. Если без параметров, то вероятнее всего подобная функция выполнится только один раз за сессию, а потом будет возвращаться полученное при первом вызове значение...
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #33508254
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык передавать ей в аргуметны timestamp

он в пределах транзакции не меняется... соответственно в пределах одной транзакции стабле функция будет выдавать одно и тоже значения и выполнится только один раз
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Можно ли заблокировать на время триггер?
    #35078989
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_sergсм. док на тему alter table disable trigger
DISABLE/ENABLE TRIGGER
можно ввыполнять внутри другого тригера?
в доке ичего не нашёл на эту тему и похоже что не работает, те тригер всё равно исполняеться.
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #35079020
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4_Alex st_sergсм. док на тему alter table disable trigger
DISABLE/ENABLE TRIGGER
можно ввыполнять внутри другого тригера?
в доке ичего не нашёл на эту тему и похоже что не работает, те тригер всё равно исполняеться.
гм, не знаю не проверял. А вы уверены что стоит так делать? имхо, распутать логику потом будет (очень?) затруднительно... во всяком случае я бы поискал другое решение.
...
Рейтинг: 0 / 0
Можно ли заблокировать на время триггер?
    #35079172
4_Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_serg 4_Alex st_sergсм. док на тему alter table disable trigger
DISABLE/ENABLE TRIGGER
можно ввыполнять внутри другого тригера?
в доке ичего не нашёл на эту тему и похоже что не работает, те тригер всё равно исполняеться.
гм, не знаю не проверял. А вы уверены что стоит так делать? имхо, распутать логику потом будет (очень?) затруднительно... во всяком случае я бы поискал другое решение.

именоо если делать всё на проверках условий то получаеться сложнее, а так есть чёткие ситуации когда я уверен что тригер нужно выключить.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Можно ли заблокировать на время триггер?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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