我有一个名为seque_post的序列.
我需要找出它正在使用的表格.有没有办法编写一个会给出表名的查询?
我写了这个查询来查找序列:
select *
from pg_class
where relname like 'seque_post'
Run Code Online (Sandbox Code Playgroud)
那里有一个reltoastrelid根据手册给出的文件:
与此表关联的TOAST表的OID,如果没有,则为0.TOAST表在辅助表中存储"脱节"的大型属性.
但我不知道如何从这里继续..建议?
要查找序列与"相关"的表,您可以使用以下内容:
select seq_ns.nspname as sequence_schema,
seq.relname as sequence_name,
tab_ns.nspname as table_schema,
tab.relname as related_table
from pg_class seq
join pg_namespace seq_ns on seq.relnamespace = seq_ns.oid
JOIN pg_depend d ON d.objid = seq.oid AND d.deptype = 'a'
JOIN pg_class tab ON d.objid = seq.oid AND d.refobjid = tab.oid
JOIN pg_namespace tab_ns on tab.relnamespace = tab_ns.oid
where seq.relkind = 'S'
and seq.relname = '[your sequence name]'
and seq_ns.nspname = 'public';
Run Code Online (Sandbox Code Playgroud)
只是为了完成图片:
反过来(查找列的序列)更容易,因为Postgres有一个函数来查找列的序列:
select pg_get_serial_sequence('public.some_table', 'some_column');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3030 次 |
| 最近记录: |