Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể thực hiện các giao dịch COMMIT bên trong thủ tục lưu trữ MySQL?


Như chúng ta biết giao dịch START sẽ bắt đầu giao dịch và COMMIT được sử dụng để thực hiện bất kỳ thay đổi nào được thực hiện sau khi bắt đầu giao dịch. Trong ví dụ sau, chúng tôi đã tạo một thủ tục được lưu trữ với COMMIT cùng với giao dịch START sẽ chèn một bản ghi mới và cam kết các thay đổi trong bảng ‘worker.tbl’ có dữ liệu sau -

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
|  1 | Mohan   |
|  2 | Gaurav  |
|  3 | Rahul   |
|  4 | Saurabh |
+----+---------+
4 rows in set (0.00 sec)

Ví dụ

mysql> Delimiter //
mysql> Create Procedure st_transaction_commit()
    -> BEGIN
    -> START TRANSACTION;
    -> INSERT INTO employee.tbl(name) values ('Yash');
    -> UPDATE employee.tbl set name = 'Sohan' WHERE id = 3;
    -> COMMIT;
    -> END //
Query OK, 0 rows affected (0.03 sec)

Bây giờ khi chúng ta gọi thủ tục này, nó sẽ chèn và cập nhật giá trị trong bảng worker.tbl. Nó cũng sẽ cam kết các thay đổi.

mysql> Delimiter ;
mysql> Call st_transaction_commit();
Query OK, 0 rows affected (0.17 sec)

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
|  1 | Mohan   |
|  2 | Gaurav  |
|  3 | Sohan   |
|  4 | Saurabh |
|  5 | Yash    |
+----+---------+
5 rows in set (0.00 sec)