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

เกิดอะไรกับธุรกรรมปัจจุบัน ถ้า START TRANSACTION รันระหว่างธุรกรรมอยู่


ธุรกรรมปัจจุบันจะถูก COMMIT และจบลง ทันที หากรัน START TRANSACTION กลางคืนธุรกรรมที่กำลังดำเนินอยู่ การเปลี่ยนแปลงทั้งหมดในธุรกรรมเดิมจะกลายเป็นถาวร (implicit commit)

ตัวอย่าง

ตาราง marks มีข้อมูล 3 แถว เริ่มธุรกรรม INSERT 2 แถว แล้วรัน START TRANSACTION อีกครั้ง:

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)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO Marks Values(4, 'Rahul','History',40);
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Marks Values(5, 'Yashraj','English',48);
Query OK, 1 row affected (0.00 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

คำสั่ง START 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)

ข้อมูลที่ INSERT ในธุรกรรมแรกถูกบันทึกถาวรแล้ว