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

Cách sử dụng giao dịch lồng nhau (nested transactions) trong MySQL

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)