插入现有表格时会自动更新主键吗?

时间:2019-11-21 11:50:47

标签: postgresql primary-key sql-insert

实际上,我的问题基本上是same as here,但是我需要将嵌套查询中的值插入现有表中,而我对sql不太了解,因为它不知道如何合并setval部分进入我的查询:

insert into table_a
select * 
from table_b 
where val_1 IN (select "val_1" from table_c where "val_2" is null)

返回

ERROR:  duplicate key value violates unique constraint "table_a_pkey"
DETAIL: Key (qid)=(470971) already exists.

现在,我知道我可以按照here的说明使用drop column和autgenerate进行变通,但是必须有一种更优雅的方法。我正在使用Postgresql / Postgis 2.4 btw。

1 个答案:

答案 0 :(得分:0)

如果主键是自动生成的,请不要插入PK列:

insert into table_a (some_column, other_column, third_column)
select some_column, other_column, third_column
from table_b 
where val_1 IN (select "val_1" from table_c where "val_2" is null)

(我不得不猜测列名,因为您没有提供真实的列名)