У меня есть сценарий, в котором я получил несколько записей, вставленных в таблицу, даже если проверки выполнены, я объясню последовательность кода ниже.
BEGIN Transection;
var model = select id from table1 where outlet_code = 123 and survey_id = 5
if(model){
throw new Exception("Outlet is already Surveyed.");
}else{
INSERT Record into the table
}
Commit Transection;
Проблема:
Я получаю несколько запросов от мобильной стороны для загрузки опроса, но проблема возникает, когда я получил несколько запросов с одним и тем же кодом розетки.
First Request outlet_code = 123abc and survey_id = 5
Second Request outlet_code = 123abc and survey_id = 5
Дело в том, что Второй запрос не должен быть вставлен в код, однако в некоторых ситуациях обе записи вставляются в «table1»
Я протестировал этот сценарий, но получил исключение, и это нормально, но в базе данных есть записи, которые нарушают это условие, и я получил обе записи в базе данных
любезно предложите, что я делаю неправильно, у меня просто есть идея, что это может быть проблемой порядка совершения транзакций, но я не знаю, как решить эту ситуацию.
База данных SQL Server 2008.
Самый простой и чистый способ — создать первичный ключ для идентификатора столбца, чтобы таблица не принимала вставки с дублирующими идентификаторами. Это выдаст ошибку, хотя на второй вставке, так что это должно быть обработано также.
Других решений пока нет …