Spíš bych řekl, že jsou špatně všechny tři příklady, více či méně. Nejvhodnější by bylo použít první příklad, pouze to udělat v transakci s vhodnou úrovní izolace. A pokud to MySQL činí problémy, použít vhodnější databázi (z open source např. Firebird nebo PostgreSQL).