SAVEPOINT

SAVEPOINT เอาไว้เพื่อหากต้องทำการ rollback เพียงบางส่วน แต่ยังไม่ได้ทำการ commit

สร้าง savepoint

SAVEPOINT <savepoint_name>

ทำการ rollback สู่ savepoint

ROLLBACK TO SAVEPOINT <savepoint_name>

Transaction Log

เก็บว่ามีการเปลี่ยนแปลงอะไรบ้างระหว่างการรอ COMMIT หรือ REVERT
ผู้ใช้จะต้องทำการ COMMIT เพื่อเก็บข้อมูลใหม่ โดยที่ DBMS จะทำการ lock database ที่มีการเปลี่ยนแปลง เพื่อรอให้คนที่แก้ ทำการ COMMIT

ผู้ใช้คนอื่นจะยังไม่เห็นการเปลี่ยนแปลงของ database หากผู้ใช้ยังไม่ทำการ COMMIT

เมื่อ COMMIT แล้ว

  • ข้อมูลที่มีการแก้จะถูกบันทึก
  • ข้อมูลก่อนหน้าจะถูกเปลี่ยนไป
  • ผู้ใช้ทุกคนดู transaction ได้
  • Savepoint จะถูกลบ