我需要 pg_class.reltablespace 作為默認表空間的實際 oid 而不是 0。對于現有和未來的新表。我知道這是每個設計,但我需要實際的 oid 來實作自動化。
例如:此表在默認命名空間上
# select relname,reltablespace from pg_class where relname = '<my table>' ;
relname | reltablespace
-------------------- ---------------
<my table> | 0
在我的情況下,它需要是“1663”:
# SELECT oid, spcname FROM pg_tablespace where spcname = 'pg_default';
oid | spcname
------ ------------
1663 | pg_default
是否有配置來改變這種行為?或者對獲取表空間 oid 的查詢進行一些修改
uj5u.com熱心網友回復:
如果關系的表空間為 0,則表示該表位于資料庫的默認表空間中:
SELECT t.oid::regclass,
CASE WHEN t.reltablespace <> 0
THEN t.reltablespace
ELSE d.dattablespace
END
FROM pg_class AS t
CROSS JOIN pg_database AS d
WHERE d.datname = current_database()
AND t.relname = 'mytable';
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/454914.html
標籤:sql PostgreSQL postgresql-11
上一篇:使用函式的引數來呼叫
