我正在进行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列。
答案 0 :(得分:1)
在最近的PostgreSQL版本上,这个构造的正确语法是:
EXECUTE 'INSERT INTO ' || tablename || ' VALUES ($1.*)'
USING NEW;