В таблице SQL Server у меня есть следующие 2 столбца:
RowId : первичный ключ, числовой, идентификационный столбец и автоматическая вставка.
MailId : без ключа, числовой, без идентификатора и без автоматической вставки.
Идентификатор почты может быть повторен. В случае нового MailId я проверю max (MailId) +1 и вставлю его в новую строку, а в случае дублирования значение будет приходить в качестве параметра.
Логика выглядит хорошо, но здесь есть одна проблема, которую я только что рассматривал (хотя степень достоверности очень мала) В то же время могут быть два разных новых запроса MailId. Может ли это вызвать логическую ошибку? Например, когда проверено, что код max (MailId) +1 был 101, и я сохранил его в переменной, но это может произойти до того, как следующая вставка будет выполнять новую запись, вставленную в таблицу. Теперь max (MailId) +1 в таблице будет 102, но значение в переменной будет 101?
Любое предложение, пожалуйста, я хочу также контролировать вероятность этой ошибки.
EDIT
(я не использую identity (1,1), потому что я также должен передать в него пользовательские значения)