臨時表與永久資料表結構相似,但資料儲存在 tempdb 系統資料庫中。最大特點是當不再使用時會由系統自動清除,不佔用使用者資料庫空間,適合暫存中繼運算結果或階段性資料。
| 類型 | 命名規則 | 可見範圍 | 自動刪除條件 |
|---|---|---|---|
| 本地臨時表 | 以單一 # 開頭(如 #Employees) | 僅建立該表的目前連線可見 | 使用者中斷與 SQL Server 連線時 |
| 全域臨時表 | 以雙 ## 開頭(如 ##Employees) | 建立後所有連線均可存取 | 所有參考該表的連線都中斷時 |
-- 建立本地臨時表
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY);
INSERT INTO #MyTempTable VALUES (1);
當預存程序或多使用者同時建立同名本地臨時表時,SQL Server 會在內部為表名附加數字尾碼以區分。儲存於 tempdb.sysobjects 中的完整名稱 = 使用者指定名稱 + 系統產生尾碼。因此,本地臨時表的指定名稱 不得超過 116 個字元,以預留空間給尾碼。
除非使用 DROP TABLE 顯式移除,否則皆由系統依作用域自動管理。