Stačí nastavit v databázi unikátní index a duplicitní záznam se nevloží. Select pak nebude potřebný a atomicita operace bude zajištěna.
Tak předpokládám, že tam ten index je. Ale zaprvé tam nebudu cpát duplicitní data a generovat zbytečně chyby v databázi (byť bych si je třeba v php odchytil) a zadruhé chci asi nějak zjistit a zobrazit stav transakce - třeba uživateli nebo to někam zalogovat.
Unikátní index splňuje vše, co je zmíněno.
Jak?
Tím, že neumožní duplicitní záznam vložit ani externím nástrojem.
Takže tam pak budeš z aplikace insertovat záznamy s existujícím id a je podle tebe vše v pořádku?
O vkládání duplicitních ID vůbec není řeč. Přečti si původní dotaz.
Ok, už to vidím, jemu se ten duplicitní záznam vložil, čímž pádem chápu tvojí reakci. Takže řešení je tam prostě přidat správný unikátní klíč (nejspíš primární) a na straně aplikace použít transakce.