是否可以将外键指向系统目录(pg_catalog)表的字段?
当我尝试以下操作时:
ALTER TABLE my_table ADD CONSTRAINT fk_my_table FOREIGN KEY (role_name) REFERENCES pg_roles(rolname) ON UPDATE CASCADE;
我明白了:
ERROR: referenced relation "pg_roles" is not a table
答案 0 :(得分:3)
这是不可能的。
如果你正在尝试系统表,你会得到像
********** Error **********
ERROR: permission denied: "pg_attribute" is a system catalog
SQL state: 42501
即使您覆盖权限,系统也不会强制执行约束。 所以我们不能用系统表引用创建约束。
如果您的角色很少,那么请从pg_roles进行手动检查或创建临时表,然后进行约束。
create temp table test1 as select * from pg_roles