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

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

MySQL không hỗ trợ transaction lồng nhau trực tiếp, nhưng có thể mô phỏng bằng SAVEPOINT.

Các bước:

  1. Tạo bảng.
  2. Bắt đầu transaction: START TRANSACTION.
  3. Chèn bản ghi.
  4. Tạo savepoint: SAVEPOINT tên_savepoint.
  5. Thực hiện các thao tác khác.
  6. Rollback về savepoint nếu cần: ROLLBACK TO tên_savepoint.

Ví dụ:

mysql> CREATE TABLE NestedTransactionDemo (Name VARCHAR(200));
mysql> START TRANSACTION;
mysql> INSERT INTO NestedTransactionDemo VALUES('John');
mysql> SAVEPOINT transaction2;
mysql> INSERT INTO NestedTransactionDemo VALUES('David');
mysql> SELECT * FROM NestedTransactionDemo; -- 2 dòng
mysql> ROLLBACK TO transaction2;
mysql> SELECT * FROM NestedTransactionDemo; -- chỉ còn John

Lưu ý: SAVEPOINT cho phép quay lại trạng thái trung gian mà không hủy toàn bộ transaction.