То, что вы запрашиваете, - это условный SELECT, если вы можете получить блокировку UPDATE, если я правильно читаю ваш запрос.Я не верю, что есть способ сделать это.Однако в качестве альтернативы вы можете сделать что-то вроде:
SELECT myCount FROM myTable WHERE ID = someValue
Затем вы можете обновить значение и выполнить UPDATE с предложением WHERE, которое ищет идентификатор и исходное значение myCount,Последовательность, подобная
SELECT myCount FROM myTable WHERE ID = someValue
origCount = myCount++
UPDATE myTable WHERE ID = someValue AND myCount = origValue
Если ваше ОБНОВЛЕНИЕ показывает, что обновлено ноль строк, у вас есть признак того, что кто-то еще обновил его, и затем вы повторяете последовательность или переходите к альтернативной логике.
Я считаю,это позволит достичь того, что вы ищете, не обнаруживая наличие блокировки, поскольку вы указали, что обращаетесь к одной строке за раз, и вы можете использовать изоляцию CS.
Обычно это называется ОптимистичныйПараллелизм
Оптимистический контроль параллелизма (OCC) - это метод управления параллелизмом, применяемый к транзакционным системам, таким как системы управления реляционными базами данных и программная транзакционная память.OCC предполагает, что несколько транзакций могут часто завершаться, не мешая друг другу.Во время выполнения транзакции используют ресурсы данных без получения блокировок этих ресурсов.Перед фиксацией каждая транзакция проверяет, что никакая другая транзакция не изменила прочитанные данные.Если проверка выявляет конфликтующие изменения, транзакция принятия отменяется и может быть перезапущена. [1]Оптимистическое управление параллелизмом было впервые предложено Х. Т. Кунгом и Джоном Т. Робинсоном