Global Temporary Table คือคำตอบสุดท้ายที่ออราเคิลตั้งแต่ 8i เป็นต้นมาได้ให้ฟีเจอร์นี้มาเพื่อใช้สำหรับเป็นที่พักข้อมูลชั่วคราว โดยที่ผู้ใช้งานในแต่ละ session จะเห็นเฉพาะข้อมูลของตัวเอง และที่สะดวกไปกว่านั้นก็คือ เมื่อผู้ใช้ออกจากระบบหรือจบ session ออราเคิลก็จะทำการลบข้อมูลพักใน session นั้น ๆ ให้โดยอัตโนมัติ โดยมีรูปแบบคำสั่งที่ใช้ในการสร้าง table ดังนี้
create global temporary table ...table_name... (column1 data_type, column2 data_type,...)
โดยคำสั่งนี้มี option ให้เลือก 2 option คือ
- on commit delete rows ใช้ option นี้เมื่อ commit จบ transaction แล้วข้อมูลใน table จะถูกลบทิ้งทันที โดย option นี้จะถูกระบุเป็นค่า default ถ้าไม่มีการระบุ
- on commit preserve rows ทางเลือกนี้จะยังคงเก็บข้อมูลไว้ใน table แม้ว่าจะจบ transaction ไปแล้วก็ตาม แต่ข้อมูลจะถูกลบทิ้งเมื่อจบ session
ตัวอย่างเช่น
create global temporary table gt_temp (col1 varchar2(10),col2 varchar2(20)) on commit delete rows;
ต่อไปนี้เราก็จะได้ใช้งาน table พักโดยสามารถใช้คำสั่ง insert,update,delete เพื่อจัดการกับข้อมูล และสามารถทำ index ได้เหมือนกับ table ปกติโดยที่ไม่ต้องมาคอยจัดการลบข้อมูลทิ้งอีกต่อไป