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

Làm cách nào để người dùng có thể kết thúc giao dịch MySQL hiện tại một cách rõ ràng?


Sau đây là các cách với sự trợ giúp của giao dịch MySQL hiện tại có thể được kết thúc một cách rõ ràng -

Bằng lệnh COMMIT

Giao dịch hiện tại sẽ được kết thúc rõ ràng nếu chúng ta chạy lệnh COMMIT. Trong trường hợp này, các thay đổi sẽ được cam kết.

Ví dụ

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)

Trong ví dụ này, câu lệnh COMMIT sẽ kết thúc giao dịch một cách rõ ràng và các thay đổi sẽ được lưu.

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 2    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

Bằng lệnh ROLLBACK

Giao dịch hiện tại sẽ được kết thúc rõ ràng nếu chúng ta chạy lệnh ROLLBACK. Trong trường hợp này, các thay đổi sẽ được khôi phục.

Ví dụ

Giả sử chúng ta có dữ liệu sau trong bảng "mark" và chúng ta đã áp dụng giao dịch và lệnh ROLLBACK như sau -

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 2    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO Marks Values(3, 'Rahul','History',40);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(4, 'Yashraj','English',48);
Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

Trong ví dụ này, câu lệnh ROLLBACK sẽ kết thúc giao dịch một cách rõ ràng và các thay đổi sẽ được khôi phục lại.

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 2    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)