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

Gatilhos Oracle - problema com tabelas mutantes


Como você notou, será difícil responder às suas necessidades de negócios com gatilhos. A razão é que a Oracle pode atualize/insira as tabelas com mais de um thread ao mesmo tempo para uma única consulta (DML paralelo). Isso implica que sua sessão não pode consultar a tabela que ela atualiza enquanto a atualização ocorre .

Se você realmente quiser fazer isso com gatilhos, terá que seguir o título tipo de lógica mostrada neste artigo por Tom Kyte . Como você pode ver, não é algo simples.

Existe outro método, mais simples, mais elegante, mais fácil de manter:use procedimentos. Revogue o direito de atualização/inserção para o(s) usuário(s) do aplicativo e escreva um conjunto de procedimentos que permitem que o aplicativo atualize as colunas de estado.

Esses procedimentos manteriam um bloqueio na linha pai (para evitar que várias sessões modifiquem o mesmo conjunto de linhas) e aplicariam sua lógica de negócios de maneira eficiente, legível e de fácil manutenção.