Я запускаю хранимую процедуру, которая идет
....
select xxxx
if xxxx !found
insert xxxxx
do stuff with xxx
...
, очевидно, здесь есть гонка.Мое наивное ожидание состояло в том, что, если я правильно установлю уровень изоляции транзакции (сериализуемый), тогда гонка будет автоматически решена (через прозрачный перезапуск, как другие системы БД, с которыми я работал).Кажется, это не так.
Я думаю, что должен сам обнаружить ошибку 40001 и повторно отправить неудачную транзакцию.
Это правильно?Могу ли я где-нибудь установить флаги, чтобы сказать: «Пожалуйста, сделай это волшебством»?