ต่อไปนี้เป็นวิธีที่ด้วยความช่วยเหลือซึ่งการทำธุรกรรม MySQL ปัจจุบันสามารถสิ้นสุดได้อย่างชัดเจน -
โดยคำสั่ง COMMIT
ธุรกรรมปัจจุบันจะสิ้นสุดลงอย่างชัดเจนหากเราจะเรียกใช้คำสั่ง COMMIT ในกรณีนี้ การเปลี่ยนแปลงจะมีผล
ตัวอย่าง
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(1, 'Aarav','Maths',50); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(2, 'Harshit','Maths',55); Query OK, 1 row affected (0.00 sec) mysql> COMMIT; Query OK, 0 rows affected (0.06 sec)
ในตัวอย่างนี้ คำสั่ง COMMIT จะสิ้นสุดธุรกรรมอย่างชัดเจน และการเปลี่ยนแปลงจะถูกบันทึกไว้
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)
โดยคำสั่ง ROLLBACK
ธุรกรรมปัจจุบันจะสิ้นสุดลงอย่างชัดเจนหากเราจะเรียกใช้คำสั่ง ROLLBACK ในกรณีนี้ การเปลี่ยนแปลงจะถูกย้อนกลับ
ตัวอย่าง
สมมติว่าเรามีข้อมูลต่อไปนี้ในตาราง 'marks' และเราใช้คำสั่ง transaction และ ROLLBACK ดังนี้ -
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(3, 'Rahul','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(4, 'Yashraj','English',48); Query OK, 1 row affected (0.00 sec) mysql> ROLLBACK; Query OK, 0 rows affected (0.04 sec)
ในตัวอย่างนี้ คำสั่ง ROLLBACK จะยุติการทำธุรกรรมอย่างชัดเจนและการเปลี่ยนแปลงจะถูกย้อนกลับ
mysql> SELECT * FROM Marks; +------+---------+---------+-------+ | Id | Name | Subject | Marks | +------+---------+---------+-------+ | 1 | Aarav | Maths | 50 | | 2 | Harshit | Maths | 55 | +------+---------+---------+-------+ 2 rows in set (0.00 sec)