如果唯一,则sqlite3插入行

时间:2012-03-11 20:38:12

标签: android sql sqlite

这是我的表架构:

downloadstbl

_id int not null auto
url text not null
filename text not null
date text not null)

我想只在表格中没有相同网址的行时插入一行。

例如,如果存在以下行:

_id=1
url="http://google.com/img.jp"
filename="img.jp"
date="11/03/2012"

然后,如果我尝试插入另一行有url =“http://google.com/img.jp”的行,则不会插入sql语句以避免同一个远程文件的重复行。

我知道我可以通过首先执行SELECT并检查行是否已经存在来完成此操作,但是我想检查在插入点是否可以使事情更加健壮/干净。

2 个答案:

答案 0 :(得分:2)

您可以(并且出于数据完整性原因)通过将url添加到表的SQL create语句或仅添加UNIQUE(url)来向unique列添加唯一约束not null。当插入URL已经在表中的行时,这将导致插入失败。然后,您可以使用insertWithOnConflict检查插入的结果。

答案 1 :(得分:1)

首先,我会将UNIQUE关键字添加到url列。 然后,在插入时,请使用此INSERT OR IGNORE代替INSERT