我正在使用“ALTER SEQUENCE sequence OWNED BY table.column”来更改 Postgres 中的序列关联。有没有办法使用 \ds 或类似的东西来查看这些新信息?\ds 仍将表所有者显示为序列所有者。
问问题
9446 次
2 回答
8
SELECT c.relname,u.usename
FROM pg_class c, pg_user u
WHERE c.relowner = u.usesysid and c.relkind = 'S'
AND relnamespace IN (
SELECT oid
FROM pg_namespace
WHERE nspname NOT LIKE 'pg_%'
AND nspname != 'information_schema'
);
于 2013-07-14T14:25:39.143 回答
7
OWNED BY table.column
更改关联的列;OWNER TO newowner
更改拥有该序列的角色。所有者角色是 中显示的内容\ds
。我不知道psql
查看序列的链接列的命令。OWNED BY 主要用于在删除引用列时级联删除关联序列。
您可以通过针对系统目录表pg_class、pg_depend和pg_attribute构建查询来了解所拥有的列。我不确定 pg_depend 的所有确切语义,但是这个查询应该向您显示序列的列依赖关系:
select tab.relname as tabname, attr.attname as column
from pg_class as seq
join pg_depend as dep on (seq.relfilenode = dep.objid)
join pg_class as tab on (dep.refobjid = tab.relfilenode)
join pg_attribute as attr on (attr.attnum = dep.refobjsubid and attr.attrelid = dep.refobjid)
where seq.relname = 'sequence';
于 2012-03-28T18:42:32.747 回答