3

是否可以有一个指向系统目录(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
4

1 回答 1

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 
于 2012-09-25T07:34:40.390 回答