Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

índice exclusivo mysql usado como método de manipulação de exceção em java


Eu digo que você não faz isso, por dois motivos:
  • as mensagens de erro não estão claras:ERROR 1062 (23000):Duplicate entry 'xxx' for key 1 . Você sempre tem 100% de certeza de qual chave é 1?
  • ele prende você a um fornecedor de banco de dados específico

Acho mais simples fazer transacionalmente :
  • verificar a existência da linha;
  • lançar uma exceção se a linha já existir;
  • insira a nova linha.

Problemas de desempenho :

Eu digo meça duas vezes, corte uma vez . Crie um perfil de uso para seu caso de uso específico. No topo da minha cabeça, eu diria que o desempenho não será um problema, exceto para os cenários de uso pesado de db.

A razão é que uma vez que você executa um SELECT sobre essa linha específica, seus dados serão colocados nos caches do banco de dados e imediatamente usado para verificação de inserção feita no índice para o INSERT declaração. Também tendo em mente que este acesso é apoiado por um índice leva à conclusão de que o desempenho não será um problema.

Mas, como sempre, meça.