SQL Server: Bekerja dengan Temporary Table

Temporary table adalah tabel yang keberadaanya hanya sementara di database SQL Server.

Temporary table ini biasanya digunakan untuk menyimpan sekumpulan data hasil query untuk diakses berberapa kali. Paling sering digunakan di dalam stored procedure.

Cara membuat temporary table bisa menggunakan SELECT INTO dan CREATE TABLE.

Sintaks menggunakan SELECT INTO:

SELECT 
    select_list
INTO 
    #temporary_table
FROM 
    table_name
....

Nama temporary table harus diawali dengan #. Dan sekali dibuat maka selanjut nya dapat diperlakukan seperti table biasa.

Sebagai contoh, Rani akan membuat sebuah temporary table #employeetemp yang akan diisi data yang diambil dari tabel employee.

Query yang digunakan:

SELECT 
    first_name, last_name
INTO 
    #tempEmployee_Table
FROM 
    dbo.employee

Hasilnya bisa kita lihat di object explorer SQL Server Management Studio. Di System Databases > tempdb > Temporary Tables



Meskipun pada query yang kita membuat nama tabel sendiri, tapi pada tempdb temporary tabel  akan tersimpan dengan nama yang ditambahkan urutan supaya nama tabel menjadi unik. Karena jika kita menyimpan pembuatan temporary table ini di dalam stored procedure misalnya, maka ada kemungkinan temporary tabel di buat bersamaan dari tempat/koneksi berbeda.

Cara lain untuk membuat temporary table adalah dengan create table seperti membuat table pada umumnya tetapi nama tablenya dimulai dengan # . Contoh saya menggunakan query sebagai berikut:

-- membuat temporary table
CREATE TABLE #saleslist (
    ID INT,
    FullName VARCHAR(201)
);

-- isi temporary table dari select table

INSERT INTO #saleslist(ID, FullName)
SELECT employeeid, full_name FROM employee

-- select temporarty table untuk melihat hasilnya
SELECT * FROM #saleslist


Tabel temporary ini hanya akan berlaku pada koneksi yang saat ini terjadi saja. 

Jika kita membuka tab query baru yang berarti koneksi berbeda maka saat kita select temporary table tersebut akan menghasilkan error seperti gambar di bawah. 


Lalu kapan temporary table akan hilang/terhapus? Saat koneksi tempat kita membuat temporary table tersebut ditutup maka temporary table akan otomatis hilang.

Sebagai contoh mari kita tutup jendela SQL yang tadi dibuka. Saat kita refresh tempdb, temporary table sudah terhapus.



Lalu bagaimana membuat temporary table dapat diakses oleh semua koneksi? Jawabannya adalah memakai dua buah tanda pagar (hash) contohnya sebagai berikut:

-- membuat temporary table
CREATE TABLE ##saleslist (
    ID INT,
    FullName VARCHAR(201)
);

-- isi temporary table dari select table
INSERT INTO ##saleslist(ID, FullName)
SELECT employeeid, full_name FROM employee

-- select temporarty table untuk melihat hasilnya
SELECT * FROM ##saleslist


Perbedaan hasil dapat kita lihat di System Database --> tempdb --> Temporary Tables, nama yang ditampilkan sama dengan nama yang dibuat di query sehingga mudah dipanggil di tempat koneksi lain.


Kedua jenis temporary table dapat dihapus dengan cara:
  • Menutup koneksi yang membuat temporary table
  • Menghapus dengan menggunakan DROP TABLE, seperti pada table biasa.
Syntax Drop Table pada Temporary Table:
DROP TABLE #nama_table;

DROP TABLE ##nama_table;


Post a Comment

0 Comments