在注册期间防止重复输入

时间:2017-01-09 13:08:03

标签: mysql sql

注册期间有一个检查过程,因此现有的用户名和电子邮件不能与新注册一起使用。验证后,数据立即存储,我们无法看到导致问题的原因。也许我们应该使用某种类型的锁定?

我们在表单中使用了一个唯一的哈希值,我们在每个进程之后交换,不知怎的,由于双击或其他事件,用户注册仍然存在两次。

您对我们如何阻止双重录入有任何想法吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您希望表中的值唯一,请在表中使用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);

让数据库完成工作,这样可以保证数据的完整性。那你就不用担心竞争条件。

我应该注意:您可能需要两个唯一约束。目前还不清楚你想要独特的是什么:

string input = "a a b test a a";
string[] words = input.Split(' ');

var combinations = from index in Enumerable.Range(0, words.Length-1)
                   select new Tuple<string,string>(words[index], words[index+1]);

var groupedTuples = combinations.GroupBy(t => t);
var countedCombinations = groupedTuples.Select(g => new { Value = g.First(), Count = g.Count()});