2017-01-09 2 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. , , Я не знаю, что вы думаете, но уникальные ограничения/индексы - это правильный способ реализовать эту функциональность. –

Смежные вопросы