PostgreSQL OID是否会随着时间而改变?

时间:2020-10-07 14:23:27

标签: postgresql

上下文

我正在创建一个服务,用户可以在其中管理自己的数据库表。

我发现了两种引用表的方式:

  1. 名称:table_schema, table_name from information_schema.tables
  2. OID:relid from pg_class

列相同:

  1. 名称:table_schema, table_name, column_name from information_schema.columns
  2. attnum:attrelid, attnum from pg_attribute

我不想直接使用该名称,因为它会随着时间变化(可以重命名)

问题

使用这些数字作为参考是否安全?

official documentation

中我几乎没有找到有用的信息

2 个答案:

答案 0 :(得分:0)

使用oid作为对表的永久引用不是一个好主意。

尽管oid在数据库的生命周期内从未发生变化,但是从pg_dump恢复后,情况将有所不同。

使用转储/还原或pg_upgrade进行的重大升级也将更改oid

答案 1 :(得分:-1)

否,OID不变。如果放置并重新创建对象,它们将有所不同,因为这将被视为一个新对象,否则它们将保持原样。列(属性)也是如此,除非删除和重新创建该列,否则attnum保持不变。 attnum值永远不会在同一张表中重复使用。