使用 nextval 从临时表中插入新数据



我在以下方面遇到了问题(在PostgreSQL中(。

目的:

  • 从临时表读取数据tmp
  • 将此处理到另一个表y
  • 使用表中的nextval ytmp中的数据结合使用。

我以为这可以完成这项工作:

INSERT INTO y (v1, v2) VALUES (nextval(y.v1), SELECT v2 FROM tmp)

还尝试过:

INSERT INTO y (v1, v2) VALUES (SELECT nextval(y.v1), v2 FROM tmp)

谁能解释一下如何做到这一点?

您显示的代码中有两个误解/错误:

  1. nextval()需要序列的名称,而不是列名称。
  2. 如果使用select语句为insert语句提供数据,则不能使用values()

我想你想要的东西是:

insert into y (v1, v2) 
select nextval(...), v2 
from tmp;

我不清楚你所说的">使用表 y 中的下一个值"是什么意思。如前所述,nextval(( 对序列进行操作,而不是对表或列进行操作。如果您的意思是">从与 y.v1 关联的序列中获取 nextval",并且y.v1定义为serial列,您可以执行以下操作:

insert into y (v1, v2) 
select nextval(pg_get_serial_sequence('y','v1')), v2 
from tmp;

但这需要将v1定义为serial

相关内容

  • 没有找到相关文章

最新更新