我遇到以下问题(在PostgreSQL中)。
目的:
tmp
y
nextval
中的y
和tmp
中的数据。我认为这可以胜任:
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)
任何人都可以解释如何做到这一点吗?
答案 0 :(得分:0)
您所显示的代码中存在两个误解/错误:
nextval()
需要序列的名称,而不是列名。 select
语句提供insert
语句的数据,则无法使用values()
我想你想要的东西是:
insert into y (v1, v2)
select nextval(...), v2
from tmp;
我不清楚“使用表y 中的nextval”是什么意思。如前所述,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