Wir wissen, dass bei einer Transaktion Anweisungen als Einheit ausgeführt werden. Wenn ein Vorgang innerhalb der Transaktion fehlschlägt, schlägt die gesamte Transaktion fehl und sollte zurückgesetzt werden. Andernfalls werden alle durch die Anweisung vorgenommenen Änderungen in der Datenbank gespeichert. Um Transaktionen zu implementieren, stellt MySQL die folgende Anweisung bereit:
Wie der Name schon sagt, beginnt die Transaktion mit dieser Anweisung. Im Grunde teilt es MySQL mit, dass nachfolgende Anweisungen bis zum Ende der Transaktion als eine einzige Arbeitseinheit behandelt werden sollen.
Die COMMIT-Anweisung schreibt Änderungen an der Datenbank fest. Mit anderen Worten: Wenn eine Transaktion erfolgreich abgeschlossen wird, sollte ein COMMIT-Befehl ausgegeben werden, um die Änderungen an allen beteiligten Tabellen wirksam zu machen.
Der ROLLBACK-Befehl macht alle durch die Anweisung vorgenommenen Änderungen rückgängig und versetzt die Datenbank in den vorherigen Zustand zurück, in dem die Transaktion begann.
Das Folgende ist ein Beispiel, das die MySQL-Transaktionsimplementierung zeigt -
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.06 sec)
In diesem Beispiel wird die Transaktion durch die START TRANSACTION-Anweisung gestartet. Führen Sie dann zwei INSERT-Anweisungen aus, gefolgt von einer COMMIT-Anweisung. Die COMMIT-Anweisung speichert die Änderungen in der Datenbank, was aus dem folgenden Ergebnissatz ersichtlich ist, der zeigt, dass die Werte in die Tabelle eingefügt wurden -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Harshit','History',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
In diesem Beispiel wird die Transaktion durch die START TRANSACTION-Anweisung gestartet . Führen Sie dann zwei INSERT-Anweisungen aus, gefolgt von einer ROLLBACK-Anweisung. Die ROLLBACK-Anweisung macht die an der Datenbank vorgenommenen Änderungen rückgängig, was aus der folgenden Ergebnismenge ersichtlich ist, die zeigt, dass keine neuen Werte in die Tabelle eingefügt wurden -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 1 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonWie implementieren wir MySQL-Transaktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!