SQLite INSERT OR IGNORE 不会忽略重复项

SQLite INSERT OR IGNORE doesn't ignore duplicates

我正在编写一个 java 程序来合并两个具有相同架构的数据库。这是 SQLite 或我的查询的问题,而不是 Java 代码,因为我能够在 DB 浏览器应用程序中准确地复制它。

我有 2 个数据库:一个正在合并,一个是目的地。

我最初连接到正在合并的数据库,然后将目标数据库连接为“dest”。 我发出以下查询来复制数据:

INSERT or IGNORE into dest.AnalogInput SELECT * from AnalogInput where timestamp >= 1600824664131000000 AND timestamp <= 1600824664131000000

这工作正常并插入数据。如果我 运行 它再次使用相同的数据,它会在目标数据库中插入一个副本。我认为“OR IGNORE”的目的是为了防止重复?是我的查询不正确还是我对 OR IGNORE 的理解不正确?

编辑:是的,我知道时间戳是相同的 - 这是一个通用查询,我只是在单个时间戳上使用几个样本进行测试。

谢谢!

INSERT OR IGNORE 仅在 table.
中存在唯一约束时有效 因为没有而且你不能添加任何东西,因为 SQLite 不是那么灵活,做你想做的唯一方法是这样的:

INSERT or IGNORE INTO dest.AnalogInput 
SELECT * FROM AnalogInput WHERE ....
EXCEPT
SELECT * FROM dest.AnalogInput