gpt4 book ai didi

sql - postgresql 从选择中插入

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:23 24 4
gpt4 key购买 nike

我有两个表 table1 和 test_table1,它们具有相同的模式。

两个表都有行/数据和 pk id 从 1 开始。

我想做的事:

insert into test_table1 select * from table1;

但是由于 test_table1 中存在来自 table1 的 pk 值,这失败了。

绕过它的方法是指定列并将 pk 列排除在外,但由于某些原因,这也不起作用:

例如注意 - 下面的查询中没有 pk 列

insert into test_table1 (col1, col2,..., coln) select col1,col2,...,coln from table1;

返回

ERROR: duplicate key value violates unique constraint "test_table1_pkey" DETAIL: Key (id)=(1) already exists.

我知道这在 MySql 中有效,这只是因为 Postgresql 吗?不管怎么样?

编辑:

两个表都有主键和序列集。

因为不清楚 - 表没有相同的数据。我只想将表 1 中的行添加到 test_table1。

对于告诉我从查询中排除主键的答案 - 我按照我之前说的做了。

最佳答案

只需从查询列中删除 pk 列

insert into test_table1 (col2,..., coln) select col2,...,coln from table1;

如果仍然失败,则可能您没有对 pk 列进行排序。 在现有的 pk 列上创建序列

create sequence test_table1_seq;
ALTER TABLE test_table1
ALTER COLUMN col1 SET DEFAULT nextval('test_table1_seq'::regclass);

并将序列值更新为当前值

SELECT setval('test_table1_seq', (SELECT MAX(col1) FROM test_table1));

关于sql - postgresql 从选择中插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38488778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com