Postgresql

在哪裡可以找到新創建的 Schema 的 OID

  • September 2, 2018

我在我的 Postgres 數據庫中創建了一個新的模式。我想用新模式的 OID 替換 pg_class 表中的 OID。但是我不知道在哪裡可以找到新創建的 Schema 的 OID。有人可以幫我解決正確的問題嗎?

不要手動更改系統目錄!


如果要將表移動到不同的架構,則無需知道表的 oid 或架構:

如手冊中所述,您可以通過以下方式輕鬆完成此操作ALTER TABLE

ALTER TABLE old_schema.some_table
   SET SCHEMA new_schema;

無需檢查或知道任何 oid。

OID 可以在系統目錄pg_namespace中找到。

獲得它的簡單方法:regnamespace在連接到同一個數據庫時轉換為對象標識符類型。(然後投射到oidtextbigint顯示。):

SELECT 'public'::regnamespace::oid;

或者,為了避免異常(需要 Postgres 9.5+):

SELECT to_regnamespace('public')::oid;

看:

但是對於您的情況,請首先考慮a_horse 的建議。(不要弄亂系統目錄!)

引用自:https://dba.stackexchange.com/questions/216506