上下文
我正在创建一个服务,用户可以在其中管理自己的数据库表。
我发现了两种引用表的方式:
table_schema, table_name from information_schema.tables
relid from pg_class
列相同:
table_schema, table_name, column_name from information_schema.columns
attrelid, attnum from pg_attribute
我不想直接使用该名称,因为它会随着时间变化(可以重命名)
问题
使用这些数字作为参考是否安全?
中我几乎没有找到有用的信息答案 0 :(得分:0)
使用oid
作为对表的永久引用不是一个好主意。
尽管oid
在数据库的生命周期内从未发生变化,但是从pg_dump
恢复后,情况将有所不同。
使用转储/还原或pg_upgrade
进行的重大升级也将更改oid
。
答案 1 :(得分:-1)
否,OID不变。如果放置并重新创建对象,它们将有所不同,因为这将被视为一个新对象,否则它们将保持原样。列(属性)也是如此,除非删除和重新创建该列,否则attnum保持不变。 attnum值永远不会在同一张表中重复使用。