上下文:我正在尝试在分区表中插入数据。我的表按月分区,因为我有大量数据(并且预计会增加一个数量),并且更经常查询最新数据。欢迎任何关于分区选择的评论(但我的问题的答案将非常受欢迎)。
documentation有一个分区示例,其中,在插入一行时,会调用一个触发器来检查新数据日期并将其相应地插入到右边的“子”表中。它使用一系列IF和ELSIF语句,每月一个。保持这一点的人(或gal)必须创建一个新表并每月更新触发器功能。
我真的不喜欢这个解决方案。我想编写一些能够完美运作的东西,我不需要时不时地更新,这将比我和我的曾孙子长寿。
所以我想知道我是否可以制作一个看起来像这样的触发器:
INSERT INTO get_the_appropriate_table_name(NEW.date) VALUES (NEW.*);
不幸的是我的所有尝试都失败了。我尝试使用“regclass”的东西,但没有成功。
简而言之,我想组成一个字符串并将其用作表名。这可能吗?
答案 0 :(得分:1)
我正准备使用EXECUTE
编写一个触发器函数,根据now()
的date_parts插入表中,或者如果它不存在则先创建它...当我发现有人时我已经为我们做过 - 就在你自己提到的文档的章节下面:
http://www.postgresql.org/docs/9.0/interactive/ddl-partitioning.html
一直向下滚动到用户“用户评论”。 Laban Mwangi发布了一个例子。
Postgres手册的 / interactive 分支已被删除,链接被重定向到/static
分支。所以我所指的评论已经消失了。请查看以后这些密切相关的答案,以获取详细说明:
对于分区,现在有更好的解决方案,例如Postgres 10中的范围分区。示例: