У меня есть сценарий, в котором я получил несколько записей, вставленных в таблицу, даже проверки выполнены, я объясняю поток кода ниже.Повторяющаяся вставка в транзакции
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.
'ПЕРВИЧНЫЙ КЛЮЧ С (IGNORE_DUP_KEY = ON)'? – Devart
какой db вы используете 1.) mysql 2.) postgresql или ???? – Monty
Если вы используете postgresql, то используйте: UPSERT: он будет изменен, если данные уже завершены или если они не будут вставляться в таблицу – Monty