0

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

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

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

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

到带有触发器的表我得到一个语法错误,因为触发器中的 EXECUTE 语句构建了这样一个插入 sql 语句(错误由连续的逗号引起):

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

如何解决错误?PS 我的表中有大约 300 列。

4

1 回答 1

1

在相当新的 PostgreSQL 版本上,此构造的正确语法是:

 EXECUTE 'INSERT INTO ' || tablename || ' VALUES ($1.*)'
   USING NEW;
于 2013-08-17T13:31:30.610 回答