Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie können wir eine ROLLBACK-Transaktion in einer gespeicherten MySQL-Prozedur durchführen?

WBOY
Freigeben: 2023-08-23 20:17:02
nach vorne
1375 Leute haben es durchsucht

我们如何在 MySQL 存储过程中执行 ROLLBACK 事务?

Wir wissen, dass ROLLBACK alle nach Beginn der Transaktion an der Datenbank vorgenommenen Änderungen rückgängig macht. Um ROLLBACK innerhalb einer gespeicherten MySQL-Prozedur auszuführen, müssen wir den EXIT-Handler deklarieren. Wir können Handler für sqlException oder SQL-Warnungen verwenden. Dies kann anhand eines Beispiels verstanden werden, in dem eine gespeicherte ROLLBACK-Prozedur für eine Tabelle mit den folgenden Details erstellt wird:

mysql> SHOW CREATE table gg\G
*************************** 1. row ***************************
       Table: gg
Create Table: CREATE TABLE `gg` (
   `Id` int(11) NOT NULL AUTO_INCREMENT,
   `Name` varchar(30) NOT NULL,
   PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
Nach dem Login kopieren

Wir können sehen, dass die Spalte „Name“ keinen NULL-Wert haben darf und die Tabelle die folgenden Daten enthält:

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

Beispiel

mysql> Delimiter //
mysql> Create Procedure st_transaction_Rollback()
    -> BEGIN
    -> DECLARE exit handler for sqlexception
    -> BEGIN
    -> ROLLBACK;
    -> END;
    -> DECLARE exit handler for sqlwarning
    -> BEGIN
    -> ROLLBACK;
    -> END;
    -> START TRANSACTION;
    -> INSERT INTO employee.tbl(name) values();
    -> UPDATE employee.tbl set name = 'YashPal' where id = 5;
    -> COMMIT;
    -> END //
Query OK, 0 rows affected (0.02 sec)

mysql> Delimiter ;
mysql> CALL st_transaction_Rollback ()
Query OK, 0 rows affected (0.00 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

Aus der obigen Ergebnismenge können wir erkennen, dass die durch die UPDATE-Anweisung vorgenommenen Änderungen ROLLBACKED wurden, da die erste Abfrage von INSERT einen Fehler auslöste (versucht, einen NULL-Wert einzufügen).

Das obige ist der detaillierte Inhalt vonWie können wir eine ROLLBACK-Transaktion in einer gespeicherten MySQL-Prozedur durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
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