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

วิธี Implement MySQL Transaction


Transaction รัน Statement เป็นหน่วยเดียว ล้มเหลวทุกอย่าง Rollback สำเร็จ Commit MySQL มีคำสั่ง:

START TRANSACTION

เริ่ม Transaction แจ้งให้ MySQL รู้ว่าต่อไปเป็น Work Unit เดียว

COMMIT

Commit การเปลี่ยนแปลงลงฐานข้อมูล

ROLLBACK

ยกเลิกการเปลี่ยนแปลง กลับสู่สถานะก่อน Transaction

ตัวอย่าง 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)

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

ตัวอย่าง Rollback

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)

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

Rollback ทำให้ข้อมูลใหม่หายไป