在 SQLite3 中,如何从“插入选择”中解决“错误:唯一约束失败”?

问题描述 投票:0回答:0

总结:当我得到一个

Error: UNIQUE constraint failed
时,有没有办法查看哪个value导致了唯一约束违规?


首先,我想说我已经用这个插入语句解决了我的问题。我不是在问如何修复 SQL,我是在问如何解决这种错误,这样我以后就不会花那么多时间了。

就是说,这是一个导致唯一约束错误的similar查询:

insert into a_table (id1, id2)
select d_table.id1,
    '1' as id2
from b_table
    join c_table on b_table.id = c_table.path_id
    join d_table on c_table.id = d_table.id1
    left join a_table on d_table.id1 = a_table.id1
where a_table.id1 is null
    and b_table.path like 'X:\%'
order by 1;

运行这个给了我一个

Error: UNIQUE constraint failed: a_table.id1, a_table.id2
,我花了一个多小时来解决问题:我没有考虑过在我的
select
中可以返回非唯一行。一旦我注意到这一点,修复就像将
select
更改为
select distinct
一样简单。我不确定这是否相关,但这违反了仅由这两列组成的 a_table 的主键。


现在我的问题是:是否有可能看到比我得到的更多的信息?具体来说,如果看到 a_table.id1

a_table.id2
values
违反了约束,那真的很有帮助,但我在任何地方都找不到有关如何显示该信息的任何信息。

我想重申我不是在寻找像这个答案这样的解决方法,我想学习如何解决这个问题。

我正在使用 sqlite3 命令行客户端。

sql sqlite primary-key unique-constraint
© www.soinside.com 2019 - 2024. All rights reserved.