是否可以有一个外键指向系统目录(pg_catalog)表的字段?
当我尝试以下操作时:
ALTER TABLE my_table ADD CONSTRAINT fk_my_table FOREIGN KEY (role_name) REFERENCES pg_roles(rolname) ON UPDATE CASCADE;
Run Code Online (Sandbox Code Playgroud)
我得到:
ERROR: referenced relation "pg_roles" is not a table
Run Code Online (Sandbox Code Playgroud)
这是不可能的。
如果您尝试使用系统表,您将收到类似错误
********** Error **********
ERROR: permission denied: "pg_attribute" is a system catalog
SQL state: 42501
Run Code Online (Sandbox Code Playgroud)
即使您覆盖该权限,系统也不会强制执行该约束。所以我们不能用系统表引用创建约束。
如果你的角色很少,那么请进行手动检查或从 pg_roles 创建临时表,然后进行约束。
create temp table test1 as select * from pg_roles
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1720 次 |
| 最近记录: |