У меня есть приложение, которое выдает письма пользователям в последовательном порядке. Это структура базы данных
-------------------
UserID LastIssued
-------------------
User1 2
User2 3
User3 0
User4 3
--------------------
Пользователи с правами администратора могут выдавать буквы (увеличивать число) пользователю. Есть несколько администраторов, которые могут войти в систему параллельно.
Это функция, которая используется для выдачи букв
private void issueNewLetterToUser(String userid)
{
int lastIssued;
lastIssued = getLastIssuedForUserID(userid);
//CHECKPPOINT1
lastIssued++;
updateLastIssuedForUserID(userid);
}
Пока выполнение находится в контрольной точке 1 в коде, предположим, что другой администратор вызывает ту же функцию для того же пользователя, следующее письмо будет выдано двумя администраторами. Я хочу предотвратить это. Кроме того, если вызов функции для какого-либо другого пользователя, выполнение должно быть разрешено, поскольку строки базы данных независимы.
Как мне этого добиться?
(Этот вопрос относится к синтаксису C #, но все же применим ко всем языкам)