У меня есть процедура Store, которая вызывается для заполнения одной таблицы всякий раз, когда мы получаем входящие файлы. Иногда мы получаем несколько файлов, и процедура будет вызываться одновременно. Внутри процедуры утверждения достаточно просты, как указано ниже:Решение Deadlock
IF NOT EXISTS (SELECT.... WHERE A=1 B=2)
INSERT ...
ELSE
UPDATE ...
WHERE A=1 and B=2
END
Делая это, я начал получать ошибку повторяющихся записей. Я предполагаю, что две одинаковые записи пытались установить INSERT
. Чтобы этого избежать, я помещал эти утверждения в транзакцию с SERIALIZABLE ISOLATION LEVEL
.
Все стало еще хуже, и я начал получать ошибку в тупике !!!
Есть что-то не то, что я делаю здесь ??
Я попытался использовать Read Committed, который, я полагаю, является уровнем по умолчанию. Но я все еще получаю дублирующую запись. – wixuser1105
Дайте прочитать незафиксированный ход. Хотя внесение изменений в ответ Эндрю определенно поможет вам решить свои проблемы. –