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

เราจะใช้ธุรกรรม MySQL ได้อย่างไร


ดังที่เราทราบในการทำธุรกรรม คำสั่งจะถูกดำเนินการเป็นหน่วย หากการดำเนินการใด ๆ ภายในธุรกรรมล้มเหลว ธุรกรรมทั้งหมดจะล้มเหลวและควรย้อนกลับ มิฉะนั้น การเปลี่ยนแปลงใด ๆ ที่ทำโดยคำสั่งจะถูกบันทึกลงในฐานข้อมูล สำหรับการดำเนินการธุรกรรม MySQL ให้คำสั่งต่อไปนี้ -

เริ่มการทำธุรกรรม

ตามชื่อที่แนะนำ ธุรกรรมเริ่มต้นด้วยคำสั่งนี้ โดยทั่วไป จะแจ้ง MySQL ว่าคำสั่งที่ตามมาควรถือเป็นหน่วยงานเดียวจนกว่าธุรกรรมจะสิ้นสุดลง

ตกลง

คำสั่ง COMMIT ทำการเปลี่ยนแปลงฐานข้อมูล กล่าวอีกนัยหนึ่ง เมื่อธุรกรรมเสร็จสมบูรณ์ ควรใช้คำสั่ง COMMIT เพื่อให้การเปลี่ยนแปลงในตารางที่เกี่ยวข้องทั้งหมดมีผล

ย้อนกลับ

คำสั่ง ROLLBACK จะเลิกทำการเปลี่ยนแปลงใดๆ ที่ทำโดยคำสั่ง และส่งกลับฐานข้อมูลไปยังสถานะก่อนหน้า เช่น ในสถานะที่เกิดขึ้นเมื่อธุรกรรมเริ่มต้น

ตัวอย่าง

ต่อไปนี้คือตัวอย่างการแสดงการใช้งานธุรกรรม MySQL –

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)

ในตัวอย่างนี้ ธุรกรรมเริ่มต้นโดยคำสั่ง START TRANSACTION จากนั้นดำเนินการคำสั่ง INSERT สองคำสั่งตามด้วยคำสั่ง COMMIT คำสั่ง COMMIT จะบันทึกการเปลี่ยนแปลงในฐานข้อมูลซึ่งสามารถสังเกตได้จากชุดผลลัพธ์ต่อไปนี้ ซึ่งแสดงว่าค่าต่างๆ ถูกแทรกลงในตารางแล้ว -

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(1, 'Aarav','History',40);
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Marks Values(1, 'Harshit','History',48);
Query OK, 1 row affected (0.00 sec)

mysql> ROLLBACK;
Query OK, 0 rows affected (0.04 sec)

ในตัวอย่างนี้ ธุรกรรมเริ่มต้นโดยคำสั่ง START TRANSACTION จากนั้นดำเนินการคำสั่ง INSERT สองคำสั่งตามด้วยคำสั่ง ROLLBACK คำสั่ง ROLLBACK จะยกเลิกการเปลี่ยนแปลงที่ทำกับฐานข้อมูลซึ่งสามารถสังเกตได้จากชุดผลลัพธ์ต่อไปนี้ซึ่งแสดงว่าไม่มีการแทรกค่าใหม่ลงในตาราง -

mysql> SELECT * FROM Marks;
+------+---------+---------+-------+
| Id   | Name    | Subject | Marks |
+------+---------+---------+-------+
| 1    | Aarav   | Maths   | 50    |
| 1    | Harshit | Maths   | 55    |
+------+---------+---------+-------+
2 rows in set (0.00 sec)