У меня странная проблема.У меня есть таблица с первичным ключом, который создается в триггере INSTEAD OF.Вероятно, это худший способ реализации первичного ключа, но они в основном выбирают максимум, увеличивают его на 1 и используют это значение в качестве ключа.Это происходит вместо триггера.
У меня есть приложение .Net, которое запускает транзакцию RepeatableRead, и я вставляю запись в эту таблицу.Это прекрасно работает, пока я не пытаюсь сделать больше одной вставки одновременно.Если я это сделаю, я получу ошибку нарушения PK.Мне кажется, что обе вставки запускаются, триггер выбирает один и тот же последний номер для каждой транзакции, увеличивает его на 1, а затем пытается вставить обе записи с тем же новым «идентификатором».
I 'Мы поговорили с администратором базы данных, который установил этот триггер, и он считает, что RepeatableRead должен помешать этому, поскольку он, очевидно, блокирует таблицу для чтения, а другие транзакции будут ожидать освобождения блокировок.Так что, по сути, мои транзакции будут происходить в сериале.
Итак, вопрос в том, зачем мне получать нарушение PK, если RepeatableRead работает так, как его описал администратор БД?