2012-03-11 64 views
0

这里是我的表模式:sqlite3的插入行,如果唯一

downloadstbl 

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

我想插入一行只有当表中的心不是一排已经用相同的URL。

例如,如果以下行存在:

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

然后,如果我尝试插入具有URL =另一行“http://google.com/img.jp” SQL语句将不插入以避免同一个远程文件出现重复行。

我知道我可以这样做,首先做一个SELECT并检查一行是否已经存在,但是我想检查这是否可能在插入点使事情更健壮/干净。

回答

1

首先,我会将UNIQUE关键字添加到url列。 然后,插入时,使用此INSERT OR IGNORE而不是INSERT

2

您可以(而且应该,对数据完整性的原因)唯一约束,通过增加UNIQUE(url)到SQL为您的表创建语句或not null后,只是增加unique添加到url列。这会导致在插入URL已经在表中的行时插入失败。然后,您可以使用insertWithOnConflict检查插入的结果。