ใน Oracle Database การทำ Transaction จะยึดหลักการ ACID โดยปกติแล้ว Transaction จะเริ่มต้นขึ้นโดยอัตโนมัติเมื่อคุณใช้คำสั่ง DML และจะสิ้นสุดลงเมื่อมีการสั่ง COMMIT หรือ ROLLBACK
คำสั่งพื้นฐาน
COMMIT: บันทึกการเปลี่ยนแปลงถาวรลง DatabaseROLLBACK: ยกเลิกการเปลี่ยนแปลงทั้งหมดใน Transaction นั้น กลับไปจุดเริ่มต้นSAVEPOINT name: กำหนดจุด “บันทึกชั่วคราว” ภายใน Transaction เพื่อให้ถอยกลับมาแค่จุดนี้ได้โดยไม่ต้องย้อนไปทั้งหมด
ตัวอย่างการเขียนใน PL/SQL
การเขียน Transaction ใน Oracle มักจะใช้ BEGIN...END; และควรมีการจัดการ Error ด้วย EXCEPTION เพื่อความปลอดภัยของข้อมูล
SQL
BEGIN -- 1. เริ่มคำสั่งแรก UPDATE accounts SET balance = balance - 500 WHERE acc_id = 101; -- 2. สร้าง Savepoint (เผื่อคำสั่งถัดไปมีปัญหาแต่ไม่อยากยกเลิกคำสั่งแรก) SAVEPOINT sp_after_withdrawal; -- 3. คำสั่งที่สอง UPDATE accounts SET balance = balance + 500 WHERE acc_id = 102; -- หากทุกอย่างทำงานถูกต้อง ให้บันทึกถาวร COMMIT; DBMS_OUTPUT.PUT_LINE ('Transaction Completed Successfully') ; EXCEPTION WHEN OTHERS THEN -- หากเกิด Error ใด ๆ ให้ถอยกลับ (Rollback) ทั้งหมด ROLLBACK; DBMS_OUTPUT.PUT_LINE ('Transaction Failed: Rolling back changes') ; RAISE; -- ส่งต่อ Error ออกไปเพื่อให้ระบบรู้ว่ามีปัญหา
END;