Acho que o que você poderia fazer é usar um
SAVEPOINT
antes de tentar executar a instrução que poderia causar a violação. Se a violação ocorrer, você poderá reverter para o SAVEPOINT
, mas mantenha sua transação original. Aqui está outro tópico que pode ser útil:Continuando uma transação após um erro de violação de chave primária