2014-04-27 82 views
0

對於我在MySQL user表,輸入新的用戶ID &避免重複的用戶ID之前,我檢查,如果類似的標識存在。對我來說,有3個辦法:MySQL的更好的方法來檢查重複條目

  1. 查詢新的用戶ID(SELECT ...),並檢查0返回行。如果行存在,那麼新的用戶標識,否則要求(INSERT...

  2. useridUNIQUEuser表,直接INSERT...如果0影響再行申請新的用戶ID

  3. useriduser表和直接UNIQUEINSERT... if mysqli_errno ($link)==1062 then request new userid

我現在我們第一種方法,但它導致2查詢並打算切換到第二種方法。我在一本讓我困惑的書中發現了第三種方法!

我的問題是

  • 是第二個方法更好地重複進入防止?
  • 是第二個&第3個違規者是相同還是不同?
  • 是否還有更好的方法來防止以最小數據庫查詢重複輸入?
+0

我只是想確保您知道AUTO_INCREMENT,它會自動爲您插入的唯一行分配一個ID。 - http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html – David

+0

謝謝,但我知道'AI',只是改進了Mysql,並糾正了我作爲新手寫的年齡老代碼。再次感謝 –

回答

1

這裏是我的答案:

  1. 是第二個方法更好地重複進入防止?

    是的,在我看來第二種方法更好,如果你知道userid將永遠是唯一的,你應該使它成爲unique字段,MySQL會自動處理它。

  2. 是第二& 3的方法相同或不同?

    我認爲兩者是相同的,MySQL在這種情況下拋出錯誤。

  3. 是否還有什麼更好的辦法,以防止與最低DB查詢重複的條目?

    你可以把UNIQUE INDEX在此列,這會更快。

1

1)重複應該由您的數據庫通過使unique字段來處理。

2)當您嘗試在一個獨特的領域,以插入相同的數據,它會給你一個錯誤。錯誤將會像 -

ERROR 1062 (23000): Duplicate entry '2147483647' for key 'UNIQUE' 

3)因此,爲了避免出現此類錯誤,您必須檢查代碼是否是表中已有的數據。

結論:

你必須使用1層& 2的方法平行100%保證,會存在於你的表中沒有重複的條目。