我尝试一次更改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
不起作用?甚至在没有帮助后重启服务。
答案 0 :(得分:2)
真的不应该更新pg_ *表。
使用
之类的命令 ALTER TABLE YOURTABLE DISABLE TRIGGER;
检查此链接。
http://archives.postgresql.org/pgsql-general/2011-10/msg00802.php