2015-10-04 53 views
0

我建立了一個註冊表單,數據庫是mysql。在用戶輸入用戶名的表單中,通過ajax請求驗證它是否存在。如果它已經存在,那麼新值不被接受。現在假設兩個用戶完全同時輸入用戶名。當第一個用戶的查詢運行時,它會檢查用戶名是否可用,然後同時查詢user2也會運行。它還會搜索用戶名是否存在。那麼mysql是否可以爲用戶輸入相同的用戶名,因爲除非第一個用戶的用戶名被插入到表中,否則搜索user2將會提供該用戶名,因爲這兩個查詢同時開始。是這樣或者我在理解這個概念時犯了一個錯誤。請幫忙 ???表可以插入重複的行嗎?

+0

如果在該列上沒有'UNIQUE'索引/約束或PRIMARY KEY,那麼是的。分享你的表格結構。 – lad2025

回答

0

這一切都取決於你如何設置你的表。如果您已將您的用戶名列設置爲唯一,那麼不管用戶名重複多少,都不會有用戶名的重複,但第二個命中總是會失敗。

http://www.w3schools.com/sql/sql_unique.asp

UNIQUE和PRIMARY KEY約束既提供了保證唯一性爲一列或一組列。

+0

你是對的。但我認爲他在輸入姓名時執行驗證,然後他提交表單。我認爲這個驗證必須執行兩次。一旦輸入名稱,然後提交表單。當然,每一筆交易都必須交易。創建約束只是部分地解決了這個問題。 – borysfan

+0

他正在要求解釋這個概念,而不是如何進行用戶名可用性檢查,但我同意你是正確的,這隻能解決問題的一面 - 另一面是代碼。 – Sean