小编Vis*_*mar的帖子

获取表的所有分区名称

我想列出 PostgreSQL 9.1 中由动态触发器创建的所有分区。
我能够使用Frank Heikens 的这个相关答案生成分区计数。

我有一个表foo有一个INSERT触发器创建foo_1foo_2等动态。插入的分区是根据主键 id 选择的,这是一种基于范围的分区。

是否可以显示 table 的当前所有分区foo

postgresql partitioning

17
推荐指数
2
解决办法
4万
查看次数

使用外键设置 Postgresql 分区

我有一个安装了 PostgreSQL 9.1 的 Ubuntu 12.04 服务器。
我正在尝试在现有的 Postgres DB(比如“xyz”)上设置分区,它有非常大的表,有些表上设置了外键。

这就是我到目前为止所做的

  • 我按照http://www.postgresql.org/docs/9.1/static/ddl-partitioning.html创建分区触发器。
  • 测试触发器,我插入的每个数据都放在正确的分区中。
  • 拿了采取pg_dump从DB“XYZ”的所有表的独立。为每个转储启用了
    该选项--column-inserts
  • 创建了一个新的数据库“xyz_new”。
  • 我在其中创建了导入的分区触发器和功能。
  • 开始导入没有外键的表。
  • 然后我导入了带有外键的表,外键引用的表已经导入。

但是在做最后一步时,我收到了一个错误,比如

ERROR: insert or update on table "aaaaa" violates foreign key constraint "bbbbb_id_refs_id_5b63fd27"
DETAIL: Key (bbbbb_id)=(6817) is not present in table "bbbbb".
结果,基于外键的表没有导入。

如果我在 bbbbb 上对 id 6817 执行 Select 查询,记录确实会显示出来。

然后在谷歌搜索之后我发现了这个,http://www.postgresql.org/docs/9.1/static/ddl-inherit.html
根据维基中提到的警告,继承不适用于外键。
(这对我来说是一个非常坏的消息 :( 我花了很多时间来创建触发器。)

现在,我想知道是否有一种解决方法可以使用外键管理 Postgres 上的分区?
或者
有没有其他方法可以处理带有外键的大表?

postgresql foreign-key partitioning

7
推荐指数
1
解决办法
7541
查看次数

标签 统计

partitioning ×2

postgresql ×2

foreign-key ×1