Heim  >  Artikel  >  Datenbank  >  Was passiert, wenn wir COMMIT in einer gespeicherten MySQL-Prozedur verwenden und eine der Transaktionen unter der START-Transaktion fehlschlägt?

Was passiert, wenn wir COMMIT in einer gespeicherten MySQL-Prozedur verwenden und eine der Transaktionen unter der START-Transaktion fehlschlägt?

WBOY
WBOYnach vorne
2023-08-27 18:09:11849Durchsuche

当我们在 MySQL 存储过程中使用 COMMIT 并且 START 事务下的事务之一失败时,会发生什么情况?

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:

Beispiel

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen