Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cách thực hiện giao dịch (transaction) trong MySQL


Trong giao dịch, các câu lệnh thực thi như một đơn vị. Nếu bất kỳ thao tác nào thất bại, toàn bộ giao dịch thất bại và rollback; ngược lại, thay đổi được lưu.

Các câu lệnh hỗ trợ

  • START TRANSACTION: Bắt đầu giao dịch, báo MySQL các câu lệnh sau là đơn vị công việc đơn lẻ
  • COMMIT: Lưu thay đổi vào cơ sở dữ liệu
  • ROLLBACK: Hoàn tác thay đổi, quay về trạng thái trước giao dịch

Ví dụ COMMIT

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55);
Query OK, 1 row affected (0.00 sec)
mysql> COMMIT;
Query OK, 0 rows affected (0.06 sec)

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
|    1 | Aarav   | Maths   |    50 |
|    2 | Harshit | Maths   |    55 |
+------+---------+---------+-------+

Dữ liệu được lưu sau COMMIT.

Ví dụ ROLLBACK

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Marks Values(1, 'Aarav','History',40);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Marks Values(1, 'Harshit','History',48);
Query OK, 1 row affected (0.00 sec)
mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
|    1 | Aarav   | Maths   |    50 |
|    1 | Harshit | Maths   |    55 |
+------+---------+---------+-------+

Dữ liệu mới bị xóa sau ROLLBACK, bảng quay về trạng thái ban đầu.