Я задал два вопроса сразу в моей последней теме, и на первый был дан ответ. Я решил пометить оригинальную ветку как ответившую и повторить второй вопрос здесь. Ссылка на оригинальный поток, если кто-то хочет:
Обработка проблем параллелизма SQL Server
Предположим, у меня есть таблица с полем, которое содержит внешние ключи для второй таблицы. Первоначально записи в первой таблице не имеют соответствующей записи во второй таблице, поэтому я сохраняю NULL в этом поле. Теперь в какой-то момент пользователь запускает операцию, которая сгенерирует запись во второй таблице и на нее ссылается первая таблица. Если два пользователя одновременно пытаются сгенерировать запись, необходимо создать и связать одну запись, а другой пользователь получит сообщение о том, что запись уже существует. Как я могу гарантировать, что дубликаты не создаются в параллельной среде?
Шаги, которые мне нужно выполнить:
1) Посмотрите количество записей в таблице A
2) Выполнить некоторую бизнес-логику, которая готовит одну строку, которая вставляется в таблицу B
3) Обновить записи, выбранные на шаге 1), чтобы они указывали на вновь созданную запись в таблице B
Я могу использовать scope_identity () для получения первичного ключа вновь созданной записи в таблице B, поэтому мне не нужно беспокоиться о потере новой записи из-за одновременных транзакций. Однако мне нужно исключить возможность одновременного выполнения процессов, приводящих к созданию дублирующейся записи в таблице B.