Блокировка зависела бы от транзакций, а не от статического кода.
В Oracle нет концепции оператора «BEGIN TRANSACTION», поэтому у статического анализатора нет возможности узнать, какова начальная точка транзакции.
Гипотетически, анализатор может быть написан так, чтобы, если ему был задан начальный оператор SQL или PL / SQL, он мог отслеживать все возможные пути выполнения и определять, какие таблицы подвергались операциям обновления / удаления / вставки / слияния в каком порядке.
Затем вы могли бы «сравнить» два (или более) результатов этого и определить, есть ли какие-либо таблицы, где манипулируют в другом порядке (например, TAB_A, затем TAB_B в одном и TAB_B, затем TAB_A в другом).
Я подозреваю, что это приведет к множеству ложных срабатываний.
В Oracle выбор не блокируется (кроме SELECT ... FOR UPDATE). Таким образом, взаимоблокировки возникают только при обновлении данных и только тогда, когда две параллельные транзакции пытаются обновить одни и те же строки.