ความแตกต่างระหว่าง COMMIT และ ROLLBACK ใน SQL

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 12 พฤษภาคม 2024
Anonim
Transactions in #PostgreSQL #COMMIT #ROLLBACK #SQLTransaction #Differences between commit & rollback
วิดีโอ: Transactions in #PostgreSQL #COMMIT #ROLLBACK #SQLTransaction #Differences between commit & rollback

เนื้อหา


COMMIT และ ROLLBACK เป็นคำสั่งการทำธุรกรรมสองรายการที่ใช้ในการทำหรือเลิกทำธุรกรรม ทรานแซคชันอาจมีลำดับของเคียวรีหรืออาจมีคำสั่งการอัพเดตที่แก้ไขฐานข้อมูล ความแตกต่างพื้นฐานระหว่าง COMMIT และ ROLLBACK นั้นอยู่ที่การทำงานของพวกเขา หากการทำธุรกรรมสำเร็จแล้ว COMMIT คำสั่งอนุญาตให้การเปลี่ยนแปลงที่ทำโดยการทำธุรกรรมในฐานข้อมูลกลายเป็นถาวร ในทางกลับกันถ้าการทำธุรกรรมเนื่องจากเหตุผลบางอย่างจะดำเนินการเรียบร้อยแล้ว ย้อนกลับ คำสั่งยกเลิกการปรับปรุงทั้งหมดได้ทันทีจากคำสั่งแรกของการทำธุรกรรมปัจจุบัน

ให้เราคุยถึงความแตกต่างระหว่างคำสั่ง Commit และ ROLLBACK ใน SQL ด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

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

นิยามของ COMMIT

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


ไวยากรณ์ของคำสั่ง COMMIT มีดังนี้:

COMMIT;

เมื่อคำสั่งสุดท้ายของการทำธุรกรรมสิ้นสุดลงการทำธุรกรรมจะกลายเป็น มุ่งมั่นบางส่วน. ถัดไป โปรโตคอลการกู้คืน ตรวจสอบให้แน่ใจว่าแม้ความล้มเหลวของระบบจะไม่สามารถใช้ฐานข้อมูลเพื่อทำการแก้ไขได้อย่างถาวร ทันทีที่มีการตรวจสอบนี้ กระทำจุด ของธุรกรรมได้มาถึงและในที่สุดการทำธุรกรรมก็เข้าสู่ รัฐมุ่งมั่น. เมื่อธุรกรรมเข้าสู่สถานะที่กำหนดจะไม่สามารถย้อนกลับและเริ่มธุรกรรมใหม่

นิยามของ ROLLBACK

เช่นเดียวกับ COMMIT ย้อนกลับ เป็นคำสั่ง SQL และเป็นสัญญาณว่าการทำธุรกรรมนั้นมี ไม่ เสร็จสมบูรณ์แล้ว ประสบความสำเร็จ. ดังนั้นการทำธุรกรรมคือ ยกเลิก เพื่อยกเลิกการเปลี่ยนแปลงที่ทำโดยธุรกรรม หลังจากการดำเนินการย้อนกลับไม่มีการแก้ไขที่ทำโดยการทำธุรกรรมปัจจุบันยังคงอยู่

ไวยากรณ์ของ ROLLBACK มีดังนี้:

ย้อนกลับ;

ธุรกรรม ROLLBACK มีความจำเป็นหากเกิดข้อผิดพลาดระหว่างการดำเนินการของธุรกรรม ข้อผิดพลาดอาจเป็นความล้มเหลวของระบบไฟฟ้าดับข้อผิดพลาดในงบการทำธุรกรรมผิดพลาดของระบบ ในกรณีที่ไฟฟ้าขัดข้องหรือระบบล่ม ROLLBACK จะเกิดขึ้นเมื่อระบบรีสตาร์ทอีกครั้ง ROLLBACK สามารถเกิดขึ้นได้หาก COMMIT ยังไม่ได้ดำเนินการ


  1. ข้อแตกต่างที่สำคัญระหว่างคำสั่ง COMMIT และ ROLLBACK ของ SQL คือการใช้คำสั่ง COMMIT ทำให้การแก้ไขทั้งหมดที่ทำโดยธุรกรรมปัจจุบันกลายเป็นสิ่งถาวร ในทางกลับกันการดำเนินการของ ROLLBACK จะลบการปรับเปลี่ยนทั้งหมดที่ทำโดยธุรกรรมปัจจุบัน
  2. เมื่อคำสั่ง COMMIT ได้ดำเนินการแก้ไขที่ทำโดยการทำธุรกรรมไม่สามารถย้อนกลับ อย่างไรก็ตามเมื่อคำสั่ง ROLLBACK ถูกดำเนินการฐานข้อมูลจะถึงสถานะก่อนหน้า
  3. คอมมิชชันได้รับการดำเนินการเกี่ยวกับการดำเนินการที่ประสบความสำเร็จของงบการทำธุรกรรม อย่างไรก็ตามการย้อนกลับจะถูกดำเนินการเมื่อการทำธุรกรรมไม่ได้รับการดำเนินการประสบความสำเร็จ

สรุป:

เพื่อให้มั่นใจว่าการเปลี่ยนแปลงที่ทำโดยการทำธุรกรรมจะถูกบันทึกไว้ในฐานข้อมูลอย่างถาวรให้ใช้ COMMIT หลังจากการทำธุรกรรมเสร็จสมบูรณ์ ในกรณีที่การทำธุรกรรมประสบข้อผิดพลาดใด ๆ ในขณะดำเนินการเพื่อยกเลิกการเปลี่ยนแปลงที่ทำโดยการทำธุรกรรม ROLLBACK จะถูกใช้