Oracle Global Temp Tablo
Merhaba,
Bu yazıda Oracle Global Temp Tablolardan bahsedeceğim. Temp tablolar verileri aktif SESSION veya TRANSACTION sonlanıncaya kadar tutan ve yalnızca veriyi yaratan SESSION’ın görebildiği TEMPORARY tablolardır.
Kullanım ihtiyacı asgari seviyede olan ama doğru yer ve zamanda kullanıldığında azami kolaylık sağlayan tablolardır.
Şu ana kadar toplamda 2 veya 3 kere kullandığım bu özellik için benim ihtiyaç durumum aşağıdakilerden oluşmaktaydı:
- Hesaplama yaparken verinin geçici olarak tutulması gereken ekranlar
- Verinin kalıcı olarak tutulma zorunluluğu olmayan hesaplamalar
- Yalnızca veriyi oluşturanın görmesi gerektiği durumlar
Temp tablolar iki şekilde kullanılabiliyor.
1. İlgili SESSION tarafından oluşturulan verilerin TRANSACTION sonlanınca yani COMMIT veya ROLLBACK yapılınca silinmesi
Bu durumda tabloya SESSION tarafından INSERT edilen kayıtlar COMMIT ve ROLLBACK anında tablodan silinirler.
1 2 3 4 5 6 7 |
create global temporary table hr.xx_anil_temp_tbl_tnx ( satir_id number, tutar number, vade date ) on commit delete rows; |
2. İlgili SESSION tarafından oluşturulan verilerin SESSION sonlanınca silinmesi
Bu durumda tabloya SESSION tarafından INSERT edilen kayıtların COMMIT edilince silinmez, ilgili SESSION’ın çıkış yapması veya kopması durumunda ise silinir.
1 2 3 4 5 6 7 |
create global temporary table hr.xx_anil_temp_tbl_session ( satir_id number, tutar number, vade date ) on commit preserve rows; |
Temp Tabloların Temel Özellikleri
- TRUNCATE komutu sadece ilgili SESSION tarafından INSERT edilmiş kayıtları siler. Diğer SESSION kayıtlarını etkilemez.
- Veriler TEMP TABLESPACE içerisinde tutulur.
- SESSION beklenmedik bir şekilde sonlansa dahi veriler tablodan silinir.
- INDEX, VIEW ve TRIGGER’lar normal tablolarda olduğu gibi GLOBAL TEMP tablolarda da kullanılabilir.