Hello,
Lors de l'ajout d'une entrée dans une table, je fait les choses suivante dans mon code JDBC:
- J'essai d'insérer l'entrée avec une requête
- Si une exception est levée, je regarde le message (ex.getMessage()). Si celui-ci contient le nom d'une contrainte d'unicité (ou le mot primary dans le cas de la clé primaire de la table), je fait un certains nombre de traitements et je renvoi que l'entrée existe déjà.
Question: est-ce portable? Je n'en ai pas l'impression: j'ai remarqué que sous windows / mysql, les comportements sont différents, et dans certains messages d'erreurs, les noms de contraintes sont en minuscule etc... Mieux, sous un linux 64 bit, je n'ai pas le même message...
Bref, la solution "facile" serait de faire d"abord une requête vérifiant la contrainte, et ensuite d'insérer si OK. Mais c'est moche: la vérification se fait du coup deux fois (par moi et par le SGBD).
Des infos là dessus ?
Partager