更新pg_constraint无效(postgres)

时间:2012-01-09 13:12:48

标签: postgresql

我尝试一次更改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 个答案:

答案 0 :(得分:2)

真的不应该更新pg_ *表。

使用

之类的命令

ALTER TABLE YOURTABLE DISABLE TRIGGER;

检查此链接。

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