Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como lidar com inserções simultâneas no banco de dados causando violação de uma regra para os registros no banco de dados?


O problema que você está descrevendo é chamado Write Skew.

Em princípio, o isolamento de transações SERIALIZEABLE cuida disso, mas não no banco de dados Oracle . O Oracle fornece apenas isolamento de instantâneo, mesmo quando você solicita SERIALIZABLE.

No Oracle, praticamente a única solução confiável é usar algum tipo de bloqueio. Isso não precisa necessariamente ser um bloqueio em uma linha da tabela, você também pode usar bloqueios consultivos via DBMS_LOCK para isso.