mps*_*pso 7 postgresql postgresql-9.1 postgresql-9.2
我正在使用“ALTER SEQUENCE sequence OWNED BY table.column”来更改 Postgres 中的序列关联。有没有办法使用 \ds 或类似的东西查看这些新信息?\ds 仍将表所有者显示为序列所有者。
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'
);
Run Code Online (Sandbox Code Playgroud)
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';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8704 次 |
| 最近记录: |