Heim > Datenbank > MySQL-Tutorial > 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?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2023-08-27 18:09:11
nach vorne
888 Leute haben es durchsucht

当我们在 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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage