PRAGMA AUTONOMOUS TRANSACTION ใน PLSQL ใช้ทำอะไร
PRAGMA AUTONOMOUS TRANSACTION
ใน PLSQL ใช้ในการกำหนดให้ Function หรือ Procedure ย่อยๆ
ให้ทำงาน ภายใต้ Transaction ย่อยๆ ของตัวเองได้เป็น อิสระ
โดยไม่ต้องอยู่ภายใต้ Transaction หลัก
ยกตัวอย่าง
- Program หลัก มีการครอบด้วย Transaction Begin commit ไว้
- แล้วในระหว่าง Begin กับ commit มีการไปเรียก Function ย่อย
- ใน Function ย่อย มีการสั่ง Begin Commit ไว้เหมือนกัน (เกิด Transaction ย่อย)
- ถ้าไม่ใส่ PRAGMA AUTONOMOUS TRANSACTION Function ย่อยนั้นจะถูกคลุม transaction เดียวกับตัวแม่
แล้วที่เลวร้ายคือ commit ใน Transaction ย่อยนั้นจะมีผลกับ Transaction ด้วย
- แต่ถ้าหาก ครอบ PRAGMA AUTONOMOUS TRANSACTION ไว้ จะทำให้ Transaction ภายใน Function ย่อยๆ
สามารถทำงาน ได้เป็นอิสระ ไม่ข้องเกี่ยวซึ่งกันและกัน
แนะนำว่า
การสร้าง Function ย่อยๆ แล้วมีการ ทำ transaction begin , commit ไว้ในตัว
ควรจะใส่ PRAGMA AUTONOMOUS TRANSACTION ไว้ด้วย