обновление pg_constraint не имеет никакого эффекта (postgres) - PullRequest
0 голосов
/ 09 января 2012

Я попытался изменить все внешние ключи в PostgreSQL сразу, чтобы каскадировать при удалении:

UPDATE pg_catalog.pg_constraint
SET confupdtype='c', confdeltype='c', confmatchtype='u'
WHERE connamespace=2200;

Нет ошибок, и когда я проверяю таблицы с помощью pgadmin, он выглядит правильно, но когда я пытаюсь удалить строку таблицы, на которую ссылаются, это приводит к ошибке ограничения. Просто оператор SQL работает:

ALTER TABLE tblname
  DROP CONSTRAINT IF EXISTS  fk3e2e4a8ff123848a;

ALTER TABLE tblname
  ADD CONSTRAINT fk3e2e4a8ff123848a FOREIGN KEY (field)
      REFERENCES othertable (id) MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

Есть идеи, почему изменение pg_catalog.pg_constraint не работает? даже перезапуск службы после не помог.

1 Ответ

2 голосов
/ 09 января 2012

На самом деле вам не следует обновлять таблицы pg_ *.

Используйте такую ​​команду, как

ALTER TABLE YOURTABLE DISABLE TRIGGER;

Проверьте эту ссылку.

http://archives.postgresql.org/pgsql-general/2011-10/msg00802.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...