B.4.6.2 临时 table 问题
用创建临时 table创建的临时 table 具有以下限制:
-
InnoDB
,MEMORY
,MyISAM
和MERGE
存储引擎仅支持TEMPORARY
table。 -
NDB 群集不支持临时 table。
-
SHOW TABLES语句未列出
TEMPORARY
个 table。 -
要重命名
TEMPORARY
个 table,RENAME TABLE
不起作用。使用ALTER TABLE代替:
ALTER TABLE old_name RENAME new_name;
- 您不能在同一查询中多次引用
TEMPORARY
table。例如对于以下不起作用:
SELECT * FROM temp_table JOIN temp_table AS t2;
该语句产生此错误:
ERROR 1137: Can't reopen table: 'temp_table'
-
如果您以不同的别名在存储的函数中多次引用临时 table,即使引用在函数内的不同语句中发生,也会发生“无法重新打开 table”错误。对于在存储函数外部创建并在多个调用方和被调用方函数之间引用的临时 table,可能会发生这种情况。
-
如果创建的
TEMPORARY
与现有的非TEMPORARY
table 具有相同的名称,则非TEMPORARY
table 将被隐藏,直到删除TEMPORARY
table 为止,即使这些 table 使用不同的存储引擎。 -
在复制中使用临时 table 存在一些已知问题。有关更多信息,请参见第 16.4.1.29 节,“复制 table 和临时 table”。