2012-03-11 62 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檢查插入的結果。