2017-01-09 125 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。 。 。我不知道你在想什么,但是独特的约束/索引是实现这个功能的正确方法。 –