如何在postgres上插入带有序列的新记录

时间:2017-02-08 13:19:21

标签: postgresql

我有一个表'new_table',其序列号为主键。 如何使用其他表中的数据向其中插入新记录。我试过了:

insert into new_table ( 
(select (select NEXTVAL('my_sequence')),a,b,c from old_table)
);

但得到了

  

重复键值违反唯一约束DETAIL:键(id)=(...)   已经存在。

1 个答案:

答案 0 :(得分:0)

  1. 只列出跳过序列的列,如:

    insert into new_table (a,b,c) select a,b,c from old_table;

  2. 如果将默认值设置为获取nextval,则无需手动执行此操作。

    1. 检查您的序列是否不在max(id)值之后。像:
    2. select max(id) from new_table

      如果是的话,用新的酒窖重启序列,如:

      alter sequence my_sequence restart with 1999;或你的最大值