【问题标题】:Adding partition to a PostgreSQL table which is been used for insertion at that moment?向当时用于插入的 PostgreSQL 表添加分区?
【发布时间】:2014-07-03 08:42:25
【问题描述】:

我正在检查如何将分区添加到当时用于插入的表中。

我使用的是 postgres 9.3,我已经创建了基本的分区表,如下所示。

  • 父表 - 客户
  • 子表 - customer_month_01 到 customer_month_06

我在插入时创建了触发器,并插入到所有工作正常的表中。 (根据相应表的触发器插入数据)

现在我关心的是如何在记录插入发生时将新分区添加到父级。

我更新了触发器功能,但我一直在将该触发器添加到主(父)表中。为了添加更新的触发器,我必须先删除旧触发器。由于正在进行连续插入,因此在我删除触发器后不久,所有插入将进入父表(在触发器删除窗口内并添加新触发器)。因此,完成新触发器创建后,我必须手动将数据移动到适当的分区。我想防止这种情况发生。

如何在不插入父表的情况下完成此任务?

【问题讨论】:

  • 需要更换触发器还是只执行函数?
  • 我试图替换触发器,但找不到任何语法来做到这一点。所以我试图放下触发器并重新创建。那就是我遇到问题的地方。任何替换触发器功能的方式都达到了预期的效果。

标签: postgresql postgresql-9.3 database-partitioning


【解决方案1】:

在这种情况下,更新触发器功能就足够了。更新触发函数后,新数据将被重定向到适当的子表。

http://www.postgresql.org/docs/9.3/static/ddl-partitioning.html

【讨论】:

  • 请注意,自 Postgres 10 起,声明式分区不再需要触发器
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2022-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-29
相关资源
最近更新 更多