Říkám, že to neděláte ze dvou důvodů:
- chybové zprávy jsou trochu nejasné:CHYBA 1062 (23000):Duplicitní záznam 'xxx' pro klíč 1 . Jste si vždy 100% jisti, který klíč je 1?
- zamkne vás na konkrétního dodavatele databáze
Připadá mi jednodušší transakce :
- zkontrolovat existenci řádku;
- vyvolá výjimku, pokud řádek již existuje;
- vložte nový řádek.
Problémy s výkonem :
Říkám dvakrát měř, jednou řež . Profil použití pro váš konkrétní případ použití. Na začátek bych řekl, že s výkonem nebude problém, s výjimkou scénářů těžkého využití db.
Důvodem je, že jakmile provedete SELECT
přes tento konkrétní řádek budou jeho data umístěna do mezipaměti databáze a okamžitě používá se pro kontrolu vkládání prováděnou na indexu pro INSERT
tvrzení. Také mít na paměti, že tento přístup je podložen indexem, vede k závěru, že výkon nebude problém.
Ale jako vždy měřte.