ORA-00001: unique constraint (<constraint_name>) violated
.No caso de somente usarmos um index (unique key) para além desse select será efectuado outro para detectar o nome do indice respectivo que foi violado.
O autor logicamente chega à conclusão que é melhor em termos de performance ter constraints associadas aos índices.
Uma outra "descoberta" é que um insert que dá erro de constraint realmente faz os seguintes passos:
- efectua um insert da linha completa
- actualiza os indices por ordem de criação (é então sugerido que os indices sejam criados por probabilidade de darem erro, ou seja PK e UK anteriormente a os outros)....falha
- redo do insert (que implica redo dos indices que tenham sido actualizados)
select 1 into L_verify from tabela where key=:p_nova_key
) antes de tentarem inserir ou fazer update.Outros preferem fazer o insert e no caso de lançamento de exception de DUPLICATE_KEY fazer update e outros o MERGE.
É necessário fazer testes no sistema para verificar qual será mais eficaz no caso da performance ser um problema.
Em termos de leitura o MERGE e o modo da exception são mais compreensivos.
No comments:
Post a Comment
Os comentários são moderados.
The comments are moderated.