SQL Server Temp (Temporary) Tablolar

SQL server ile temporary (geçici) tablolar oluşturabiliriz.Geçici tablolar çalışma anında ram’de oluşturulur ve normal bir tablo gibi çalışırlar.Temporary tablolar tempdb’de saklanır.

SQL Server iki farklı temp tablo tipi sağlar.

– Local Temp Tablo
– Global Temp Tablo

images

Local Temp Tablo

Local Temp tablolar sadece tabloyu oluşturan kullanıcının, oluşturmak için kullandığı connection üzerin de geçerlidir. Kullanıcı bağlantıyı kapattığı anda otomatik olarak silinir. Local Temp tablo tanımlamak için tablo isminin önüne # işareti koymamız yeterlidir.

Global Temp Table

Global olarak temp tablo tanımlamak için ## karakterlerini tablo isminden önce eklememiz yeterlidir. Global temp tablolar bir connection içinde tanımlandığı anda, normal tablolar gibi tüm kullanıcılar ve connectionlar içinde kullanılabilir hale gelirler. Global tabloyu oluşturduğunuz connection kapatılana kadar bu tablo var olmaya devam eder.

Local temp tablo oluşturmak için aşağıdaki gibi bir sorgu yeterli olacaktır.

CREATE TABLE #TPErsonel
(
Ad VARCHAR(20),
Soyad VARCHAR(20)
)

Temp tablolar için özel sorgulara gerek yoktur.Normal tablolarda kullandığımız insert/select /delete sorgularını çalıştırabiliriz.

INSERT INTO #TPersonel VALUES ( 'Salih','Uluköylü');
SELECT * FROM #TPersonel

Yukarıki sorguları çalıştırdıktan başka bir sorgu penceresinde select veya insert sorgusu çalıştırırsanız aşağıdaki hatayı alırsınız.

Msg 208, Level 16, State 0, Line 1
Invalid object name '#TPersonel'

Yukarıdaki hatanın sebebi, oluşturduğumuz temp tablonun sadece oluşturulduğu connection içinde geçerli olmasıdır.

Global Temp Tablo

Global bir temp tablo oluşturmak için iki adet # karakteri kullanıyoruz (##). Global temp tablolar oluşturulduğu connection aktif olduğu sürece tüm kullanıcılar ve connectionlarda kullanılabilir.

CREATE TABLE ##TPersonel
(
Ad VARCHAR(20),
Soyad VARCHAR(20)
)

INSERT ve SELECT Sorgusu

INSERT INTO ##TPersonel VALUES ( 1, 'Sabri','KUNT');
SELECT * FROM ##TPersonel

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir