2017-01-09 88 views
0

在註冊過程中有一個檢查過程,以便現有用戶名和電子郵件不能用於新註冊。驗證之後,數據會立即存儲,並且我們無法查看導致問題的原因。也許我們應該使用某種類型的鎖定?註冊期間防止重複輸入

我們在表單中使用了一個獨特的哈希,我們在每個進程之後交換,但不知何故,由於雙擊或其他事件,用戶註冊仍然存在兩次。

你有什麼想法我們可以如何防止重複輸入?

謝謝。

+1

對你的非複製字段有唯一約束? – Kritner

+0

謝謝,我們已經考慮過了,但如果這是解決問題的唯一方法,我們還不確定。 – kz88

回答

1

如果你希望值是唯一的一個表中,然後用unique約束在表:

alter table t 
    add constraint unq_username_email unique (username, email); 

讓數據庫做的工作,所以它保證了數據的完整性。那麼你不必擔心競賽狀況。

我應該注意:你可能想要兩個的獨特約束。目前還不清楚你想要什麼是唯一的:

alter table t add constraint unq_username unique (username); 
alter table t add constraint unq_email unique (email); 
+0

謝謝,我們已經考慮過了,但如果這是解決問題的唯一方法,我們還不確定。 – kz88

+0

@ kz88。 。 。我不知道你在想什麼,但是獨特的約束/索引是實現這個功能的正確方法。 –