Postgresql
在哪裡可以找到新創建的 Schema 的 OID
我在我的 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
在連接到同一個數據庫時轉換為對象標識符類型。(然後投射到oid
,text
或bigint
顯示。):SELECT 'public'::regnamespace::oid;
或者,為了避免異常(需要 Postgres 9.5+):
SELECT to_regnamespace('public')::oid;
看:
但是對於您的情況,請首先考慮a_horse 的建議。(不要弄亂系統目錄!)