Saat Anda membuat tabel sementara di SQL Server, Anda memiliki opsi untuk menjadikannya tabel sementara lokal atau global.
Berikut adalah garis besar perbedaan utama antara tabel sementara lokal dan tabel sementara global.
Penamaan
- Nama tabel sementara lokal dimulai dengan tanda angka tunggal (
#
). Misalnya,#MyTable
. - Tabel sementara lokal juga mendapatkan sufiks numerik yang dihasilkan sistem yang ditambahkan ke namanya. Ini secara otomatis dihasilkan oleh SQL Server. Ini memungkinkan beberapa sesi untuk membuat tabel sementara lokal dengan nama yang sama tanpa menyebabkan konflik penamaan. Namun, pengguna masih dapat membuat kueri tabel tanpa harus mengetahui akhiran.
- Nama tabel sementara global dimulai dengan tanda angka ganda (
##
). Misalnya,##MyTable
. - Tabel sementara global tidak ditambahkan dengan akhiran seperti dengan tabel sementara lokal.
Visibilitas
- Tabel sementara lokal hanya terlihat di sesi saat ini.
- Tabel sementara global dapat dilihat oleh semua sesi.
Masa Hidup
- Tabel sementara lokal secara otomatis dijatuhkan pada akhir sesi saat ini. Tabel sementara lokal yang dibuat dalam prosedur tersimpan dihapus secara otomatis saat prosedur tersimpan selesai. Tabel dapat direferensikan oleh prosedur tersimpan bersarang yang dijalankan oleh prosedur tersimpan yang membuat tabel. Tabel tidak dapat direferensikan oleh proses yang memanggil prosedur tersimpan yang membuat tabel.
- Tabel sementara global dihapus secara otomatis saat sesi yang membuat tabel berakhir dan semua tugas lain berhenti merujuknya. Asosiasi antara tugas dan tabel dipertahankan hanya untuk kehidupan pernyataan T-SQL tunggal. Oleh karena itu, tabel sementara global dijatuhkan pada penyelesaian pernyataan T-SQL terakhir yang secara aktif merujuk tabel saat sesi pembuatan berakhir.