ROLLBACK TRANSACTION

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

M013
PHP Super Hero Member
PHP Super Hero Member
โพสต์: 829
ลงทะเบียนเมื่อ: 22/04/2010 12:02 pm

ROLLBACK TRANSACTION

โพสต์โดย M013 » 26/08/2013 7:00 pm

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

- รูปแบบการใช้งาน

โค้ด: เลือกทั้งหมด

ROLLBACK;
หรือ
ROLLBACK TO [savepoint];

- คำอธิบาย
เเต่ละ Transections จะทำงานเสร็จสมบูรณ์ด้วยคำสั่ง COMMIT หรือ ถูกยกเลิกด้วยคำสั่ง ROLLBACK

- ตัวอย่างการใช้งาน
cus_table.jpg
ภาพที่ 1.1 ตารางข้อมูลลูกค้า
cus_table.jpg (117.27 KiB) เปิดดู 265 ครั้ง

>> ต้องการยกเลิกคำสั่งลบรายชื่อลูกค้าออก

โค้ด: เลือกทั้งหมด

UPDATE Customer
SET cus_address = 'Bangkok'
WHERE cus_name = 'Sirirut';

ROLLBACK;

DELETE FROM Customer
WHERE cus_name = 'Napapon';

SELECT * FROM Customer;

- ผลลัพธ์
จะเห็นว่ารายชื่อของลูกค้าที่จะลบออก ยังคงอยู่ในตารางข้อมูลลูกค้า
cus_table_rollback.jpg
ภาพที่ 1.2 ตารางข้อมูลลูกค้า ที่ถูก ROLLBACK จะเห็นว่ารายชื่อลูกค้ายังไม่ถูกลบออกไป
cus_table_rollback.jpg (115.33 KiB) เปิดดู 265 ครั้ง



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

- ผลลัพธ์
cus_table_edit.jpg
ภาพที่ 1.3 ตารางข้อมูลลูกค้า ที่ข้อมูลลูกค้าถูกลบออกไป
cus_table_edit.jpg (123.54 KiB) เปิดดู 265 ครั้ง

- คำอธิบาย
จะเห็นว่าผลลัพธ์ที่ได้จะทำเพียงการ แก้ไขข้อมูลที่อยู่ของ 'Sirirut' และ ลบข้อมูลของ 'Napapon'
เเต่จะไม่ทำการ INSERT ข้อมูลเพิ่มเข้าไป เพราะได้ทำการ ROOLBACK กลับไปที่ SAVEPOINT b

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 13 และ บุคคลทั่วไป 0 ท่าน