Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sperrt MySql Zeilen automatisch oder muss ich eine Sperre im Freigabemodus hinzufügen?

Ich würde denken, dass Sie sich aufgrund Ihrer Antworten auf meine Kommentare wirklich keine Gedanken über die manuelle Behandlung von Tabellensperren machen müssen. InnoDB unterstützt das Sperren auf Zeilenebene, und wenn Autocommit aktiviert ist (wie es standardmäßig der Fall ist), werden alle einzelnen Abfragen tatsächlich transaktional behandelt.

Wenn Sie nun mehrere SQL-Abfragen haben, die als eine einzige Transaktion behandelt werden müssen (dh eine Tabelle aktualisieren, dann eine andere Tabelle aktualisieren - entweder beide erfolgreich sind oder beide zurückgesetzt werden), müssen Sie eine Transaktion speziell starten und entweder festschreiben oder Setzen Sie es zurück, nachdem die vorläufigen Abfragen ausgeführt wurden.

Sie können auch SET TRANSACTION verwenden -Anweisung, wenn Sie die Transaktionsisolationsstufe ändern müssen (standardmäßig ist sie `REPEATABLE READ1).

Weitere Informationen finden Sie in der MySQL-Dokumentation