gpt4 book ai didi

linux - 为什么我的 SQLite3 表中出现 UNIQUE Con​​straint Failure

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:52 25 4
gpt4 key购买 nike

我一直在 StackOverflow、SQLite.com 和 Google 上搜索以寻求帮助,但还没有找到我要找的东西。

我需要将两个旧表组合成一个新表,但 PRIMARY KEY 和 UNIQUE 约束似乎相互冲突(一旦进入 INSERT 语句,我就会收到约束失败错误)。如果我删除 UNIQUE 约束,该脚本将运行,但我有重复的 CamIndex 记录。

CREATE TABLE tmpTable(
RowID INTEGER PRIMARY KEY AUTOINCREMENT,
CamIndex INTEGER UNIQUE NOT NULL,
LenIndex INTEGER NOT NULL,
CamDesc TEXT,
LenDesc TEXT
);

INSERT INTO tmpTable(
CamIndex,
LenIndex,
CamDesc,
LenDesc
)

SELECT
TblA.CAM_INDEX,
TblB.LEN_INDEX,
TblA.CAM_DESC,
TblB.LEN_DESC

FROM TblA
LEFT JOIN TblB on TblA.CAM_INDEX = TblB.CAM_INDEX;

如何使 CamIndex 列成为唯一列并将 RowID 保留为主键?

这也不起作用:

CREATE TABLE tmpTable(
RowID INTEGER PRIMARY KEY AUTOINCREMENT,
CamIndex INTEGER NOT NULL,
LenIndex INTEGER NOT NULL,
CamDesc TEXT,
LenDesc TEXT,
UNIQUE(CamIndex)
);

我使用的是 SQLite,因此无法使用 ALTER Table 语句添加 UNIQUE 约束。

最佳答案

您关于数据唯一性的假设是无效的。根据您在评论中的评论,您的 SELECT 语句的结果针对 LenIndexCamDesc 的不同组合生成相同的 CamIndex LenDesc。鉴于此,您不能对 CamIndex 设置唯一约束。

您需要重新评估您的 SELECT 查询以确保在您可以约束您的表之前不会从中获取虚假值。

关于linux - 为什么我的 SQLite3 表中出现 UNIQUE Con​​straint Failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43123220/

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