我可以使用SQL语言在程序定义的PostgreSQL表中插入吗?

时间:2011-09-15 15:59:42

标签: sql postgresql

上下文:我正在尝试在分区表中插入数据。我的表按月分区,因为我有大量数据(并且预计会增加一个数量),并且更经常查询最新数据。欢迎任何关于分区选择的评论(但我的问题的答案将非常受欢迎)。

documentation有一个分区示例,其中,在插入一行时,会调用一个触发器来检查新数据日期并将其相应地插入到右边的“子”表中。它使用一系列IF和ELSIF语句,每月一个。保持这一点的人(或gal)必须创建一个新表并每月更新触发器功能。

我真的不喜欢这个解决方案。我想编写一些能够完美运作的东西,我不需要时不时地更新,这将比我和我的曾孙子长寿。

所以我想知道我是否可以制作一个看起来像这样的触发器:

INSERT INTO get_the_appropriate_table_name(NEW.date) VALUES (NEW.*);

不幸的是我的所有尝试都失败了。我尝试使用“regclass”的东西,但没有成功。

简而言之,我想组成一个字符串并将其用作表名。这可能吗?

1 个答案:

答案 0 :(得分:1)

我正准备使用EXECUTE编写一个触发器函数,根据now()的date_parts插入表中,或者如果它不存在则先创建它...当我发现有人时我已经为我们做过 - 就在你自己提到的文档的章节下面:
http://www.postgresql.org/docs/9.0/interactive/ddl-partitioning.html

一直向下滚动到用户“用户评论”。 Laban Mwangi发布了一个例子。

更新

Postgres手册的 / interactive 分支已被删除,链接被重定向到/static分支。所以我所指的评论已经消失了。请查看以后这些密切相关的答案,以获取详细说明:

对于分区,现在有更好的解决方案,例如Postgres 10中的范围分区。示例: