Postgres触发基于分区,插入NEW。*给出值(10 ,,,)

时间:2013-08-17 11:40:13

标签: postgresql partitioning

我正在进行Postgresql分区,我在触发器中有这样的插入:

EXECUTE 'INSERT INTO ' || tablename || ' VALUES ' || NEW.*;

当我插入部分数据(使用默认值)时

INSERT INTO my_table(id, col) VALUES (1, 10); 

到一个带触发器的表我得到一个语法错误,因为触发器中的EXECUTE语句构建了这样一个insert sql语句(继续逗号错误):

 INSERT INTO my_table_p3 VALUES (1,10,,,,)

如何解决错误? 附:我的桌子上有大约300列。

1 个答案:

答案 0 :(得分:1)

在最近的PostgreSQL版本上,这个构造的正确语法是:

 EXECUTE 'INSERT INTO ' || tablename || ' VALUES ($1.*)'
   USING NEW;