2016-10-24 180 views
0

當用戶在對話框中輸入一些數據時,我嘗試將數據插入到sqlite數據庫表中。不過,我必須檢查沒有主鍵約束違規。我需要一些提示什麼是告訴用戶這條記錄已經存在的最好方法。到現在爲止我覺得我有兩個選擇:避免主鍵約束衝突

1)使用「選擇」與「地方」,並試圖找出是否該記錄已經

2.存在)的try/catch沿記錄查詢插入並檢查錯誤代碼19,告訴違反約束條件。

可悲的是,數字19不能只是一個主鍵約束衝突,而是任何違反約束。我更喜歡第一選擇,但這不是吃得太多的表現嗎?

爲什麼不存在關於檢查主鍵的存在和獲取適當的記錄數據的功能,所以我可以告訴用戶適當的數據,該記錄已經存在。

感謝您對本主題的任何提示。

+0

使用select。 Try-catch的目的是處理意外的行爲。這是一個非常典型的例子。 –

+0

您可以編寫一個存儲過程,先執行檢查,然後插入記錄不存在並返回成功或失敗代碼。 – juharr

+0

Thanx提示! – brighty

回答

2

使用select - 它會比在應用程序級別嘗試更快。

+0

我將使用select。不過,我建議讓它更容易使用選擇主鍵。在我的情況下,pk是三個字段的複合。對於select語句,我將不得不使用三個AND語句。可能會更容易有構造where primary_key =('val1',2,'val3');這避免了三個AND語句。 – brighty

+0

當然,我的意思是兩個AND語句 – brighty