SQLite中效率最高的“忽视if exists”?

时间:2015-08-03 05:56:35

标签: sql sqlite

每天一次,我正在使用API​​从论坛中获取50条最新帖子。我将这些信息存储在数据库中,每个帖子一行,存储Author,Title和PostID。

如果一天中的帖子少于50个,则会有重复的数据,相同的帖子会出现两次或更多次。我想避免这种情况。我想说“如果PostID已存在于数据库中,只需跳过插入该记录。”

我可以通过首先获取所有PostID的列表并将其保存为我的程序中的数组,然后在插入之前确保PostID不在该数组中来轻松完成此操作;但这似乎是愚蠢和邋..当然必须有一种方法可以在数据库中实现它。

我已经阅读了一点,INSERT OR REPLACE有效,但似乎也不是'正确'的解决方案。如果我想改变行中的字段,它也会造成问题 - 再次点击API会将所有字段重置为初始值。

这样做的聪明方法是什么?

1 个答案:

答案 0 :(得分:0)

你想要INSERT OR IGNORE。它将以静默方式跳过所有重复插入的行,并且不会修改预先存在的行。

有关详细信息,请参阅the ON CONFLICT clause documentation