查找 Postgres 表的复制身份

30

有没有一种方法可以查看Postgres表具有什么类型的复制身份,无论是使用pgAdmin还是通过查询?

2个回答

37
你可以查询 pg_class 系统目录:
SELECT CASE relreplident
          WHEN 'd' THEN 'default'
          WHEN 'n' THEN 'nothing'
          WHEN 'f' THEN 'full'
          WHEN 'i' THEN 'index'
       END AS replica_identity
FROM pg_class
WHERE oid = 'mytablename'::regclass;

3
如果您使用默认的逻辑复制标识符,了解所有没有主键的表也非常有用-https://dba.stackexchange.com/questions/29932/how-can-i-list-all-tables-without-a-primary-key#answer-29933 - Greg0ry
2
如果您将表的复制标识设置为索引,则可以使用以下语句查找相关索引:SELECT indexrelid::regclass FROM pg_index WHERE indrelid='mytablename'::regclass AND indisreplident; - Pyrocks

1
查找多个表的复制标识。查询将列出表名及其复制标识状态。
SELECT oid::regclass,CASE relreplident
          WHEN 'd' THEN 'default'
          WHEN 'n' THEN 'nothing'
          WHEN 'f' THEN 'full'
          WHEN 'i' THEN 'index'
       END AS replica_identity
FROM pg_class
WHERE oid in ('public.testtable1'::regclass,'public.testtable1'::regclass);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接