我似乎无法在特定的表空间中创建一个表。例如,当我这样做时:
CREATE TABLE myschema.mytable (rc_id integer NOT NULL) TABLESPACE my_space;然后我做了:
select * from pg_tables where schemaname ='myschema' limit 10;...the表空间为空。表空间在PgAdmin中显示为pg_default。要创建非默认表空间,需要更改什么?
发布于 2017-03-30 12:15:33
根据定义,pg_表格的“表空间”字段表示“包含表的表空间的名称(如果数据库的默认值为null)”。要获得表或表列表的准确表空间名称,首先应该获得特定数据库的默认表空间。下面的查询列出架构myschema中的所有表。
WITH tbl_spc AS (
--Get default tablespace for the database
SELECT ts.spcname AS spcname
FROM pg_tablespace ts
JOIN pg_database db ON db.dattablespace = ts.oid
WHERE db.datname = current_database()
)
SELECT
t.schemaname,
t.tablename,
--if null then get default tablespace
COALESCE(t.tablespace, ts.spcname) AS tablespace
FROM pg_tables t, tbl_spc ts
WHERE
t.schemaname = 'myschema'https://dba.stackexchange.com/questions/168478
复制相似问题