gpt4 book ai didi

postgresql - 为什么 postgresql 在键不存在时遇到重复键?

转载 作者:行者123 更新时间:2023-11-29 12:50:20 25 4
gpt4 key购买 nike

当我向 Postgresql(9.6) 中插入数据时,抛出这个错误:

ERROR:  duplicate key value violates unique constraint "book_intial_name_isbn_isbn10_key"
DETAIL: Key (name, isbn, isbn10)=(三銃士, , ) already exists.
SQL state: 23505

我在 name, isbn, isbn10 列上添加了 uniq 约束。但是当我检查 distination 表时,它不包含记录:

select * from public.book where name like '%三銃%';

如何修复?这是我的插入 sql:

insert into public.book
select *
from public.book_backup20190405 legacy
where legacy."name" not in
(
select name
from public.book
)
limit 1000

最佳答案

有根据的猜测,源表 book_backup20190405 中可能有不止一行具有唯一键元组 ('三菱', '', '')

由于批量 INSERT INTO ... SELECT ... 将是事务性的,您不会更清楚错误,因为当约束失败时所有数据都将回滚.

您可以通过对源表运行重复检查来验证这一点:

SELECT name, isbn, isbn10, COUNT(*) 
FROM public.book_backup20190405
WHERE name = '三銃'
GROUP BY name, isbn, isbn10
HAVING COUNT(*) > 1;

查看是否有重复

这是源表如何成为重复项唯一来源的示例:

http://sqlfiddle.com/#!17/29ba3

关于postgresql - 为什么 postgresql 在键不存在时遇到重复键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55559513/

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