2013-11-29 92 views
2

如果我在SQL中設置了一個UNIQUE約束列,那麼當我使用「insertOrThrow()」時,如果嘗試插入該列中已存在的值,它會引發錯誤嗎?insertOrThrow如何使用UNIQUE約束?

基本上我試圖做的是在登錄ID時(即「1020030」),並且我想要識別何時在稍後的日期使用該應用程序時掃描相同的ID。因此,如果我將標識爲「_id」的列標記爲UNIQUE,然後嘗試使用insertOrThrow()命令插入值,那麼如果值存在是因爲我將其標記爲UNIQUE,它會拋出嗎?謝謝!

回答

3

是的,它會爲您的目的。檢查insertOrThrow上的android文檔。順便說一句,如果你定義一些列爲UNIQUE,那麼對於任何重複插入將導致異常 拋出正常的數據庫概念。

請檢查sqlLite doc.

UNIQUE約束類似於PRIMARY KEY約束,不同的是一個單一的表可以具有任意數量的UNIQUE約束。對於表上的每個UNIQUE約束,每行必須具有由UNIQUE約束標識的列中唯一值的組合。與PRIMARY KEY約束一樣,出於UNIQUE約束的目的,NULL值被視爲與所有其他值(包括其他NULL)不同。如果INSERT或UPDATE語句試圖修改表內容,使得兩行或多行在一組受UNIQUE約束限制的列中具有相同的值,則違反約束條件。

因此,您將因違反約束條件而得到可拋的異常,它將滿足您的目的。

注意:UNIQUE約束允許值爲NULL。但是,與任何參與UNIQUE約束的值一樣,每列只允許有一個空值。