SQL Temporary ( Geçici ) Tablo Nedir ve Kullanımı

Veritabanı üzerinde geçici bir süre için ek tablolara ihtiyaç duyulduğunda T-SQL ile geçici
tablolar oluşturulup, kullanılır. Geçici tablolar, gerçek tablolar üzerinde işlemler yapmak yerine,
farklı sorgulamaların yapılabileceği bir deneme tahtası gibi kullanılır. Yani önemli tablolar
üzerinde kritik sorgular çalıştırmak zorunda kalındığında ve sonuçlar tahmin edilemeyecek
gibiyse, geçici bir tablo oluşturulur ve kodlar bu geçici tablo üzerinde test edilir; daha sonra
istenilen kodlar gerçek tabloya uygulanır. Aynı zamanda geçici tablolar, karmaşık ve çok fazla
bilgi olan tablolardan sadece belirli bir kısmı alarak üzerinde çalışmak için de kullanılabilir.
Geçici tablolar SQL Server’da tmpdb isimli veritabanının altında saklanırlar. Geçici tablolar,
yerel geçici tablolar (local temporary tables) ve genel geçici tablolar (global temporary tables)
olmak üzere ikiye ayrılırlar. Yerel geçici tablolar, tabloyu oluşturan kişi SQL Server ile olan
bağlantısını kapattığında yok edilir. Genel geçici tablo ise son aktif bağlantı kapatıldığı anda yok
edilir. Yani geçici tabloyu oluşturan kişi ile birlikte o anda SQL Server’a birden fazla kişi bağlı
bulunabilir. Bu durumda tabloyu oluşturan kişi SQL Server ile olan bağlantısını kapattıktan sonra
SQL Server’a bağlı bulunan kimse kalmayana kadar geçici tablo saklanır ve bağlı bulunan en son
kişi bağlantısını sonlandırdığında tablo silinir.
Geçici tablolar, normal bir tablo oluşturmak için kullanılan “CREATE TABLE” ifadesi ile
oluşturulurlar. Ancak, tablonun geçici olduğunu SQL Server’a bildirmek için tablo adı önüne “#”
işareti eklenir. Bu şekilde oluşturulan tablolar yerel geçici tablolardır ve sadece o oturum için
geçerli olup, oturum kapatıldığı andan itibaren veya başka bir sorgu (query) ekranından
erişilemezler.Geçici tablolara, başka oturumlar üzerinden veya diğer kullanıcılar tarafından
erişimi sağlamak için tablolar, “#” yerine “##” (genel geçici tablo) kullanılarak oluşturulmalıdır.
Oluşturulan geçici tablolar üzerinde normal bir tabloymuş ekleme, silme vs. gibi işlemler
yapılabilir. Ancak bu tablolar, oturum kapatıldığında veya SQL Server durdurulduğunda silinir.
Bunun dışında tablo “drop” komutu ile de silinebilir.Geçici tabloların özellikleri:
-Saklı yordam (Stored Procedure) içerisinde geçici tablo kullanılabilir; ancak, kullanıcı tanımlı
fonksiyon (User Defined Function – UDF) içerisinde geçici tablo yaratılamaz.
-Normal tablolarda olduğu gibi geçici tablolarda da indeks (index) oluşturabilir ve kimlik
(identity) alan tanımlanabilir.
-Geçici tabloların farklı kullanıcılar tarafından aynı anda oluşturulma ihtimalleri vardır. Bu
durumda sistem kendilerine benzersiz (unique) bir id ataması yaparak isim çakışmalarını engeller.
Söz Dizimi :
CREATE TABLE #Temporary(
number INT PRIMARY KEY,
name NVARCHAR(50),
surname NVARCHAR(50)
)
CREATE TABLE ##Temporary(
number INT PRIMARY KEY,
name NVARCHAR(50),
surname NVARCHAR(50)
)