Christian Seiler: MySQL 5.x : Update und Insert zusammenbinden?

Beitrag lesen

Hallo Tom,

wie kann ich bei einem MySQL-Query ein Update und ein Insert atomar binden?
Gibt es dafür inzwischen eine Lösung, außer die Tabelle zu sperren während der beiden Statements?

Klar - nutze Transaktionen für's Schreiben (BEGIN, dann Deine INSERT/UPDATE/DELETE, dann COMMIT oder ROLLBACK bei Fehler), MySQL kann das (InnoDB vorausgestzt) schon eine ganze Weile. Wenn das Isolation Level auf REPEATABLE READ oder SERIALIZABLE steht (REPEATABLE READ ist der Defaultwert), dann sind alle COMMITs der Transaktion atomar. Das Isolation Level kannst Du problemlos für Deine Sitzung umstellen, d.h. wenn Du ganz sicher sein willst, nutze am Anfang jeder Sitzung [*] (auch und gerade bei lesenden (!) Sitzungen) folgendes (ganz am Anfang vor jeder gestarteten Transaktion):

TRANSACTION ISOLATION LEVEL REPEATABLE READ

[*] Sitzung im Sinne von MySQL-Verbindung.

Viele Grüße,
Christian

--
Mein "Weblog" [RSS]
Using XSLT to create JSON output (Saxon-B 9.0 for Java)
»I don't believe you can call yourself a web developer until you've built an app that uses hyperlinks for deletion and have all your data deleted by a search bot.«
            -- Kommentar bei TDWTF