então executo o comando update: Update tabela set sequencia = sequencia + 1 where ID1 = 1 and ID2 = 0
porém recebo um erro de Duplicate Entry para a combinação ID1=1, ID2=0, Sequencia=1. Ou seja ele me gera o erro logo no update da primeira linha… Porém no fim do comando, não haverão registros duplicados, como faço para que a verificação do erro só ocorra no final do comando?
Olá felipe_gdr,
Não conheço o contexto que está trabalhando, mas se tiver como alterar o banco talvez seja mais fácil retirar a constraint e executar o comando, depois criar a constraint novamente.
na verdade esse é um comando executado por um aplicativo web, que usa JPA. Logo não queria depender de ativar/desativar constraints, pois cada banco tem uma sintaxe diferente para isso, então eu ficaria meio amarrado.
Acho que o jeito vai ser tirar essa constraint de vez.
Imaginei que seria somente um comando para rodar uma vez afim de “organizar” os dados, mas se é uma regra aplicada pelo sistema, realmente não faz sentido deletar e criar a constraint a toda execução desta regra.
Vale a pena reavaliar a constraint, se tem alguma outra forma de deixar o banco consistente modificando a mesma.
Como sugestão, os campos ID1 e ID2 podem ser UNIQUE sem o campo Sequencia na constraint e tratar isso programaticamente, talvez resolva teu problema.