Я загружаю данные массово и могу повторно вычислить все модификации триггеров постфактум с гораздо меньшими затратами, чем построчно.
Как временно отключить все триггеры в PostgreSQL?
postgresql
triggers
bulkinsert
Дэвид Шмитт
источник
источник
ENABLE REPLICA
илиENABLE ALWAYS
.10.4
и, кажется, игнорирую это заявление выше.PostgreSQL знает
ALTER TABLE tblname DISABLE TRIGGER USER
команду, которая, кажется, делает то, что мне нужно. Смотрите ALTER TABLE .источник
ALTER TABLE ... DISABLE TRIGGER USER
требуется монопольная блокировка таблицы.Для отключения триггера
Для включения триггера
источник
ALTER TABLE table_name DISABLE TRIGGER all
Он не работает с PostgreSQL 9.4 на моем компьютере с Linux, если я изменяю таблицу через редактор таблиц в pgAdmin, и работает, если я изменяю таблицу с помощью обычного запроса. Ручные изменения в таблице pg_trigger также не работают без перезапуска сервера, но работает динамический запрос, как на postgresql.nabble.com ВКЛЮЧИТЬ / ОТКЛЮЧИТЬ ВСЕ ТРИГГЕРЫ В БАЗЕ ДАННЫХ . Это может быть полезно, когда вам нужна настройка.
Например, если у вас есть таблицы в определенном пространстве имен, это может быть:
Если вы хотите отключить все триггеры с определенной функцией триггера, это может быть:
Документация PostgreSQL для системных каталогов
Есть и другие варианты управления процессом срабатывания спускового крючка:
ALTER TABLE ... ENABLE REPLICA TRIGGER ... - триггер сработает только в режиме реплики.
ALTER TABLE ... ENABLE ALWAYS TRIGGER ... - триггер будет срабатывать всегда (очевидно)
источник
Вы также можете отключить триггеры в pgAdmin (III):
источник
Также у меня работа dosent в Postgres 9.1. Я использую две функции, описанные bartolo-otrit с некоторыми изменениями. Я изменил первую функцию, чтобы она работала для меня, потому что для правильной идентификации таблицы должно присутствовать пространство имен или схема. Новый код:
то я просто выполняю запрос выбора для каждой схемы:
источник