Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีใช้ Nested Transactions ใน MySQL ด้วย SAVEPOINT

แนวคิด Nested Transactions ใน MySQL

MySQL ไร้รองรับ Nested Transactions โดยตรง แต่สามารถจำลองได้ด้วย SAVEPOINT ซึ่งช่วยให้สามารถย้อนกลับไปยังจุดหนึ่งภายใน Transaction ได้

ตัวอย่างขั้นตอนการใช้งาน

1. สร้างตาราง

mysql> create table NestedTransactionDemo (
    -> Name varchar(200)
    -> );
Query OK, 0 rows affected (0.63 sec)

2. เริ่ม Transaction

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

3. เพิ่มข้อมูลแรก

mysql> insert into NestedTransactionDemo values('John');
Query OK, 1 row affected (0.04 sec)

4. สร้าง SAVEPOINT

mysql> savepoint transaction2;
Query OK, 0 rows affected (0.00 sec)

5. เพิ่มข้อมูลที่สอง (ระดับ nested)

mysql> insert into NestedTransactionDemo values('David');
Query OK, 1 row affected (0.00 sec)

6. ตรวจสอบข้อมูล

mysql> select * from NestedTransactionDemo;
+-------+
| Name  |
+-------+
| John  |
| David |
+-------+
2 rows in set (0.00 sec)

7. ย้อนกลับไปที่ SAVEPOINT

mysql> rollback to transaction2;
Query OK, 0 rows affected (0.00 sec)

8. ตรวจสอบอีกครั้ง

mysql> select * from NestedTransactionDemo;
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)

ข้อมูล 'David' ถูกลบออก แสดงว่า ROLLBACK TO SAVEPOINT ทำงานได้อย่างถูกต้อง