SQL Transaction - 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

SQL Transaction - ROLLBACK TRANSACTION ย้อนคืนค่าในฐานข้อมูล

โพสต์ที่ยังไม่ได้อ่าน โดย M013 »

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

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

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

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

- ตัวอย่างการใช้งาน
ภาพที่ 1.1 ตารางข้อมูลลูกค้า
ภาพที่ 1.1 ตารางข้อมูลลูกค้า
cus_table.jpg (117.27 KiB) Viewed 10021 times
>> ต้องการยกเลิกคำสั่งลบรายชื่อลูกค้าออก

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

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

ROLLBACK; 

DELETE FROM Customer
WHERE cus_name = 'Napapon';

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

คำสั่ง 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;
- ผลลัพธ์
ภาพที่ 1.3 ตารางข้อมูลลูกค้า ที่ข้อมูลลูกค้าถูกลบออกไป
ภาพที่ 1.3 ตารางข้อมูลลูกค้า ที่ข้อมูลลูกค้าถูกลบออกไป
cus_table_edit.jpg (123.54 KiB) Viewed 10021 times
- คำอธิบาย
จะเห็นว่าผลลัพธ์ที่ได้จะทำเพียงการ แก้ไขข้อมูลที่อยู่ของ 'Sirirut' และ ลบข้อมูลของ 'Napapon'
เเต่จะไม่ทำการ INSERT ข้อมูลเพิ่มเข้าไป เพราะได้ทำการ ROOLBACK กลับไปที่ SAVEPOINT b

ถ้ามีมี Error ใดๆ ใน SQL จะใช้ SQL Transaction - คืออะไร ตัวอย่าง COMMIT TRANSACTION ดูเพิ่มเติมได้ที่นี่
viewtopic.php?t=18873
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41232
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: SQL Transaction - ROLLBACK TRANSACTION

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ฟังก์ชั่นของ php สำหรับ mysqli_rollback
https://www.mindphp.com/คู่มือ/63-ฟังก์ ... lback.html
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ตอบกลับโพส

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

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 67