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