MySQL 9.0 版本注意事項
使用 CREATE TEMPORARY TABLE 建立的暫存表格有下列限制
TEMPORARY表格僅支援InnoDB、MEMORY、MyISAM和MERGE儲存引擎。NDB 叢集不支援暫存表格。
SHOW TABLES陳述式不會列出TEMPORARY表格。若要重新命名
TEMPORARY表格,RENAME TABLE無法運作。請改用ALTER TABLEALTER TABLE old_name RENAME new_name;您無法在同一個查詢中多次參考
TEMPORARY表格。例如,以下操作無效SELECT * FROM temp_table JOIN temp_table AS t2;此陳述式會產生此錯誤
ERROR 1137: Can't reopen table: 'temp_table'如果您的查詢允許使用通用表格運算式 (CTE) 而非
TEMPORARY表格,您可以解決此問題。例如,此操作會因 無法重新開啟表格 錯誤而失敗CREATE TEMPORARY TABLE t SELECT 1 AS col_a, 2 AS col_b; SELECT * FROM t AS t1 JOIN t AS t2;若要避免此錯誤,請使用定義 CTE 的
WITH子句,而不是TEMPORARY表格WITH cte AS (SELECT 1 AS col_a, 2 AS col_b) SELECT * FROM cte AS t1 JOIN cte AS t2;如果您在儲存函數中以不同的別名多次參考暫存表格,即使參考發生在函數內的不同陳述式中,也會發生 無法重新開啟表格 錯誤。對於在儲存函數外部建立並在多個呼叫和被呼叫函數中參考的暫存表格,也可能會發生這種情況。
如果以與現有非
TEMPORARY表格相同的名稱建立TEMPORARY表格,則非TEMPORARY表格將會隱藏,直到捨棄TEMPORARY表格為止,即使這些表格使用不同的儲存引擎也一樣。在複製中使用暫存表格時,有一些已知問題。如需更多資訊,請參閱第 19.5.1.32 節,「複製與暫存表格」。