臨時表是會話級/連線級暫存資料的利器。本文對照 SQL Server (局部/全域) 與 MySQL 臨時表的建立、查詢、刪除語法,並說明 PHPMyAdmin 建立失常的常見原因。
| 類型 | 前綴 | 可見範圍 | 建立語法 | 刪除 |
|---|---|---|---|---|
| 局部臨時表 | # | 僅建立會話可見 | CREATE TABLE #t (c1 INT, c2 VARCHAR(50));或 SELECT * INTO #t FROM src; | 會話結束自動刪除,或 DROP TABLE #t; |
| 全域臨時表 | ## | 所有會話可見 | CREATE TABLE ##t (c1 INT); | 建立會話結束且無其他引用時自動刪除,或 DROP TABLE ##t; |
| 建立語法 | 可見範圍 | 刪除 |
|---|---|---|
CREATE TEMPORARY TABLE t (c1 INT, c2 VARCHAR(50)); | 僅當前連線 (Session) 可見 | 連線斷開自動刪除,或 DROP TEMPORARY TABLE t; |
#/## 前綴;MySQL 用關鍵字 TEMPORARY。TEMPORARY 表可與同名永久表共存 (隱藏永久表);SQL Server 不允許同名。CREATE TEMPORARY TABLE 後立即查詢可能失敗,因 PHPMyAdmin 每次請求可能建立新連線 (連線池),導致臨時表不可見。解決:在同一腳本/連線中完成建立、查詢、刪除,或改用永久表 + 定時清理。-- SQL Server SELECT * FROM #t; DROP TABLE #t; SELECT * FROM ##t; DROP TABLE ##t; -- MySQL SELECT * FROM t; DROP TEMPORARY TABLE t;