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

PHP PDO MySQL und wie geht es wirklich mit MySQL-Transaktionen um?

https://dev.mysql.com /doc/refman/5.7/en/innodb-autocommit-commit-rollback.html sagt:

Wenn Sie also in einer Sitzung autocommit=0 setzen (nennen Sie es Sitzung 1), wird diese implizit geöffnet eine Transaktion und lässt sie auf unbestimmte Zeit offen.

Die Standard-Transaktionsisolationsstufe ist REPEATABLE-READ. Daher sieht Ihre Sitzung keine aktualisierte Ansicht der festgeschriebenen Änderungen aus der Arbeit anderer Sitzungen, bis Sitzung 1 ausdrücklich festgeschrieben oder zurückgesetzt wird.

Ihre LOCK TABLES in einer anderen Sitzung 2 macht einen impliziten Commit verursachen, aber Sitzung 1 sieht das Ergebnis nicht, da sie aufgrund ihres eigenen Transaktions-Snapshots immer noch nur eine isolierte Ansicht der Daten sehen kann.