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

วิธีที่ User สามารถจบ MySQL Transaction แบบ Implicit (โดยนัย) ได้อย่างไร


Transaction จบ Implicit ได้หลายทาง:

1. รัน DDL Statement

รัน CREATE, DROP DATABASE/TABLE/ROUTINE จะ Commit อัตโนมัติ (เพราะ DDL ไม่ Rollback ได้)

mysql> START TRANSACTION;
mysql> INSERT INTO MARKS Values(3,'gaurav','Comp',69);
mysql> Create table student(id int, Name Varchar(10),);
Query OK, 0 rows affected (0.84 sec)

Transaction จบ Implicit ข้อมูล INSERT ถูก Commit ไม่ Rollback ได้:

mysql> Rollback;
mysql> select * from marks;
+------+---------+-----------+-------+
| Id   | Name    | Subject   | Marks |
+------+---------+-----------+-------+
|    1 | Aarav   | Maths     |    50 |
|    1 | Harshit | Maths     |    55 |
|    3 | Gaurav  | Comp      |    69 |
+------+---------+-----------+-------+
3 rows in set (0.00 sec)

2. ตัดการเชื่อมต่อ Client Session

Disconnect -> Implicit Rollback

3. Kill Client Session

Kill -> Implicit Rollback

4. รัน START TRANSACTION ใหม่

เริ่ม Transaction ใหม่ -> Transaction เก่าจบ Implicit (Commit)

mysql> START TRANSACTION;
mysql> INSERT INTO Marks Values(4, 'Rahul','History',40);
mysql> INSERT INTO Marks Values(5, 'Yashraj','English',48);
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

Transaction แรก Commit อัตโนมัติ:

mysql> select * from marks;
+------+---------+-----------+-------+
| Id   | Name    | Subject   | Marks |
+------+---------+-----------+-------+
|    1 | Aarav   | Maths     |    50 |
|    1 | Harshit | Maths     |    55 |
|    3 | Gaurav  | Comp      |    69 |
|    4 | Rahul   | History   |    40 |
|    5 | Yashraj | English   |    48 |
+------+---------+-----------+-------+
5 rows in set (0.00 sec)