Postgresql:角色oid的外键

时间:2013-02-25 13:10:00

标签: postgresql postgresql-9.2

如何在postgres中为数据库角色添加外键?

CREATE TABLE "public"."role_info" (
    "last_login" timestamptz,
    "user" name,
    CONSTRAINT "role_info" FOREIGN KEY ("user") REFERENCES "pg_catalog"."pg_authid" ("rolname") ON UPDATE NO ACTION ON DELETE NO ACTION
 )
 WITH (OIDS=FALSE);

这将返回权限被拒绝

1 个答案:

答案 0 :(得分:4)

你没有。您无法在当前实现中添加引用系统目录的外键。

即使某些目录稍后放宽了该限制,所有DB共享的全局目录(如pg_role)也可能会受到限制。

可以使用触发器来单向强制执行关系,从而阻止您添加引用不存在的系统商品的值。但是,您无法停止正在删除的商品,因此它的实用性有限。