การใช้คำสั่ง ROLLBACK มีผลทำให้ข้อมูลทุกอย่างที่เกิดขึ้นหลังคำสั่ง COMMIT ถูกยกเลิก หรือ
ให้เข้าใจง่ายๆ คือ ข้อมูลจะกลับไปสู่สภาพในตอนสั่ง COMMIT ครั้งสุดท้าย
- รูปแบบการใช้งาน
โค้ด: เลือกทั้งหมด
ROLLBACK;
หรือ
ROLLBACK TO [savepoint];
เเต่ละ Transections จะทำงานเสร็จสมบูรณ์ด้วยคำสั่ง COMMIT หรือ ถูกยกเลิกด้วยคำสั่ง ROLLBACK
- ตัวอย่างการใช้งาน >> ต้องการยกเลิกคำสั่งลบรายชื่อลูกค้าออก
โค้ด: เลือกทั้งหมด
UPDATE Customer
SET cus_address = 'Bangkok'
WHERE cus_name = 'Sirirut';
ROLLBACK;
DELETE FROM Customer
WHERE cus_name = 'Napapon';
SELECT * FROM Customer;
จะเห็นว่ารายชื่อของลูกค้าที่จะลบออก ยังคงอยู่ในตารางข้อมูลลูกค้า
คำสั่ง SAVEPOINT
การกำหนดตำแหน่งที่ต้องการจะ ROLLBACK
- รูปแบบการใช้งาน
โค้ด: เลือกทั้งหมด
SAVEPOINT <ชื่อของ savepoint>;
ดูข้อมูลจากภาพที่ 1.1 ตารางข้อมูลลูกค้า
โค้ด: เลือกทั้งหมด
UPDATE Customer
SET cus_address = 'Bangkok'
WHERE cus_name = 'Sirirut';
SAVEPOINT a;
DELETE FROM Customer
WHERE cus_name = 'Napapon';
SELECT * FROM Customer;
SAVEPOINT b;
INSERT INTO Customer
VALUES ('C010','Kunniga','Sukprasert','Lopburi','051-1184442');
SAVEPOINT c;
ROLLBACK TO b;
SELECT * FROM Customer;
จะเห็นว่าผลลัพธ์ที่ได้จะทำเพียงการ แก้ไขข้อมูลที่อยู่ของ 'Sirirut' และ ลบข้อมูลของ 'Napapon'
เเต่จะไม่ทำการ INSERT ข้อมูลเพิ่มเข้าไป เพราะได้ทำการ ROOLBACK กลับไปที่ SAVEPOINT b
ถ้ามีมี Error ใดๆ ใน SQL จะใช้ SQL Transaction - คืออะไร ตัวอย่าง COMMIT TRANSACTION ดูเพิ่มเติมได้ที่นี่
viewtopic.php?t=18873