Chúng ta có thể cho phép nhiều giao dịch với sự giúp đỡ của lệnh START và SAVEPOINT. Hãy tạo một bảng với lệnh CREATE.
Tạo bảng
mysql> CREATE TABLE transactionDemo -> ( -> id INT AUTO_INCREMENT, -> PRIMARY KEY(id) -> ); Query OK, 0 rows affected (0.76 sec)
Sau đó, tôi sẽ bắt đầu một giao dịch với lệnh START:
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec)
Sau đó, tôi chèn bản ghi sau với lệnh INSERT:
mysql> INSERT INTO transactionDemo VALUES(); Query OK, 1 row affected (0.04 sec)
Chúng ta có thể hiển thị bản ghi với lệnh SELECT:
mysql> SELECT * FROM transactionDemo;
Kết quả đầu ra:
+----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)
Sau đó, tôi lưu truy vấn này với SAVEPOINT:
mysql> SAVEPOINT t2;
Chèn bản ghi
mysql> INSERT INTO transactionDemo VALUES(); Query OK, 1 row affected (0.00 sec)
Hiển thị tất cả bản ghi với SELECT:
mysql> SELECT * FROM transactionDemo;
Kết quả:
+----+ | id | +----+ | 1 | | 2 | +----+ 2 rows in set (0.00 sec)
Bây giờ, chúng ta có thể rollback giao dịch đầu tiên:
mysql> ROLLBACK TO t2; Query OK, 0 rows affected (0.03 sec)
Bây giờ, hiển thị giao dịch đã lưu trước đó:
mysql> SELECT * FROM transactionDemo;
Kết quả:
+----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)