注册期间有一个检查过程,因此现有的用户名和电子邮件不能与新注册一起使用。验证后,数据立即存储,我们无法看到导致问题的原因。也许我们应该使用某种类型的锁定?
我们在表单中使用了一个唯一的哈希值,我们在每个进程之后交换,不知怎的,由于双击或其他事件,用户注册仍然存在两次。
您对我们如何阻止双重录入有任何想法吗?
谢谢。
答案 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()});