
ให้เราคุยถึงความแตกต่างระหว่างคำสั่ง Commit และ ROLLBACK ใน SQL ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | COMMIT | ย้อนกลับ |
---|---|---|
ขั้นพื้นฐาน | COMMIT ตรวจสอบการแก้ไขที่ทำโดยการทำธุรกรรมปัจจุบัน | ย้อนกลับลบการแก้ไขที่ทำโดยการทำธุรกรรมปัจจุบัน |
ผล | หลังจากดำเนินการคำสั่ง COMMIT ธุรกรรมจะไม่สามารถย้อนกลับได้ | เมื่อ ROLLBACK ได้รับการดำเนินการฐานข้อมูลจะถึงสถานะก่อนหน้านั่นคือก่อนการดำเนินการของคำสั่งแรกของการทำธุรกรรม |
การเกิดขึ้น | COMMIT เกิดขึ้นเมื่อทำรายการสำเร็จ | ย้อนกลับเกิดขึ้นเมื่อการทำธุรกรรมถูกยกเลิกในช่วงกลางของการดำเนินการ |
วากยสัมพันธ์ | COMMIT; | ย้อนกลับ; |
นิยามของ COMMIT
COMMIT เป็นคำสั่ง SQL ที่แสดงถึง ความ สำเร็จของการทำธุรกรรม เมื่อใดก็ตามที่การทำธุรกรรมเสร็จสิ้นการดำเนินการโดยไม่มีการขัดจังหวะใด ๆ การแก้ไขที่ทำกับฐานข้อมูลโดยการทำธุรกรรมจะกลายเป็นถาวร ซึ่งหมายความว่าฐานข้อมูลไม่สามารถกู้คืนสถานะก่อนหน้านี้ซึ่งเป็นก่อนที่จะดำเนินการตามคำสั่งแรกของการทำธุรกรรม
ไวยากรณ์ของคำสั่ง COMMIT มีดังนี้:
COMMIT;
เมื่อคำสั่งสุดท้ายของการทำธุรกรรมสิ้นสุดลง ถัดไป โพรโทคอลการกู้คืนทำให้ มั่นใจได้ว่าแม้ระบบจะล้มเหลวก็จะไม่สามารถใช้ฐานข้อมูลเพื่อทำการแก้ไขได้อย่างถาวร ทันทีที่มีการตรวจสอบ จุดยอมรับ ของการทำธุรกรรมได้ถึงและในที่สุดการทำธุรกรรมเข้าสู่ สถานะที่มุ่งมั่น เมื่อธุรกรรมเข้าสู่สถานะที่กำหนดจะไม่สามารถย้อนกลับและเริ่มธุรกรรมใหม่
ความหมายของ ROLLBACK
เช่นเดียวกับ COMMIT ROLLBACK ก็เป็นคำสั่ง SQL และมันก็ส่งสัญญาณว่าธุรกรรมนั้นยัง ไม่ เสร็จสมบูรณ์ ดังนั้นการทำธุรกรรมจะ ถูกยกเลิก เพื่อยกเลิกการเปลี่ยนแปลงที่ทำโดยการทำธุรกรรม หลังจากการดำเนินการย้อนกลับไม่มีการแก้ไขที่ทำโดยการทำธุรกรรมปัจจุบันยังคงอยู่
ไวยากรณ์ของ ROLLBACK มีดังนี้:
ย้อนกลับ;
ธุรกรรม ROLLBACK มีความจำเป็นหากเกิดข้อผิดพลาดระหว่างการดำเนินการของธุรกรรม ข้อผิดพลาดอาจเป็นความล้มเหลวของระบบไฟฟ้าดับข้อผิดพลาดในงบการทำธุรกรรมผิดพลาดของระบบ ในกรณีที่ไฟฟ้าขัดข้องหรือระบบล่ม ROLLBACK จะเกิดขึ้นเมื่อระบบรีสตาร์ทอีกครั้ง ROLLBACK สามารถเกิดขึ้นได้หาก COMMIT ยังไม่ได้ดำเนินการ
ความแตกต่างที่สำคัญระหว่าง COMMIT และ ROLLBACK ใน SQL
- ข้อแตกต่างที่สำคัญระหว่างคำสั่ง COMMIT และ ROLLBACK ของ SQL คือการใช้คำสั่ง COMMIT ทำให้การแก้ไขทั้งหมดที่ทำโดยธุรกรรมปัจจุบันกลายเป็นสิ่งถาวร ในทางกลับกันการดำเนินการของ ROLLBACK จะลบการปรับเปลี่ยนทั้งหมดที่ทำโดยธุรกรรมปัจจุบัน
- เมื่อคำสั่ง COMMIT ดำเนินการแก้ไขที่ทำโดยธุรกรรมไม่สามารถย้อนกลับได้ อย่างไรก็ตามเมื่อคำสั่ง ROLLBACK ถูกดำเนินการฐานข้อมูลจะถึงสถานะก่อนหน้า
- คอมมิชชันได้รับการดำเนินการเกี่ยวกับการดำเนินการที่ประสบความสำเร็จของงบการทำธุรกรรม อย่างไรก็ตามการย้อนกลับจะดำเนินการเมื่อการทำธุรกรรมไม่ได้รับการดำเนินการประสบความสำเร็จ
สรุป:
เพื่อให้แน่ใจว่าการเปลี่ยนแปลงที่ทำโดยการทำธุรกรรมจะถูกบันทึกไว้ในฐานข้อมูลอย่างถาวรให้ใช้ COMMIT หลังจากการทำธุรกรรมเสร็จสมบูรณ์ ในกรณีที่การทำธุรกรรมประสบข้อผิดพลาดใด ๆ ในขณะดำเนินการแล้วเพื่อยกเลิกการเปลี่ยนแปลงที่ทำโดยการทำธุรกรรม ROLLBACK จะถูกใช้