Angenommen, eine der Abfragen schlägt fehl oder generiert einen Fehler und die andere Abfrage wird korrekt ausgeführt. MySQL schreibt die Änderungen für die korrekt ausgeführte Abfrage trotzdem fest. Dies kann aus dem folgenden Beispiel verstanden werden, in dem wir die Tabelle „employee.tbl“ mit den folgenden Daten verwenden:
mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Sohan | | 4 | Saurabh | | 5 | Yash | +----+---------+ 5 rows in set (0.00 sec) mysql> Delimiter // mysql> Create Procedure st_transaction_commit_save() -> BEGIN -> START TRANSACTION; -> INSERT INTO employee.tbl (name) values ('Rahul'); -> UPDATE employee.tbl set name = 'Gurdas' WHERE id = 10; -> COMMIT; -> END // Query OK, 0 rows affected (0.00 sec)
Wenn wir nun diese Prozedur aufrufen, wissen wir, dass die UPDATE-Abfrage einen Fehler erzeugen wird, da wir nicht Wir haben die ID nicht auf unserer Tabelle =10. Da die erste Abfrage jedoch erfolgreich ausgeführt wird, speichert COMMIT die Änderungen in der Tabelle.
mysql> Delimiter ; mysql> Call st_transaction_commit_save()// Query OK, 0 rows affected (0.07 sec) mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Sohan | | 4 | Saurabh | | 5 | Yash | | 6 | Rahul | +----+---------+ 6 rows in set (0.00 sec)
Das obige ist der detaillierte Inhalt vonWas passiert, wenn wir COMMIT in einer gespeicherten MySQL-Prozedur verwenden und eine der Transaktionen unter der START-Transaktion fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!