Spec-Zone.ru › MySQL 9.2

B.3.6.2 Проблемы с временными таблицами

Временные таблицы, созданные с помощью CREATE TEMPORARY TABLE, имеют следующие ограничения:

  • Временные таблицы поддерживаются только движками хранения InnoDB, MEMORY, MyISAM и MERGE.

  • Временные таблицы не поддерживаются для кластеров NDB.

  • Команда SHOW TABLES не отображает временные таблицы.

  • Для переименования временных таблиц, RENAME TABLE не работает. Используйте ALTER TABLE вместо этого:

    ALTER TABLE old_name RENAME new_name;
    
  • Нельзя ссылаться на временную таблицу более одного раза в одном запросе. Например, следующий запрос не работает:

    SELECT * FROM temp_table JOIN temp_table AS t2;
    

    Запрос генерирует ошибку:

    ERROR 1137: Can't reopen table: 'temp_table'
    

    Эту проблему можно обойти, если ваш запрос позволяет использовать общие табличные выражения (CTE) вместо временной таблицы. Например, это приведет к ошибке Невозможно повторно открыть таблицу:

    CREATE TEMPORARY TABLE t SELECT 1 AS col_a, 2 AS col_b;
    SELECT * FROM t AS t1 JOIN t AS t2;
    

    Чтобы избежать ошибки, используйте предложение WITH, которое определяет CTE, а не временную таблицу:

    WITH cte AS (SELECT 1 AS col_a, 2 AS col_b)
    SELECT * FROM cte AS t1 JOIN cte AS t2;
    
  • Ошибка «Невозможно повторно открыть таблицу» также возникает, если вы ссылаетесь на временную таблицу несколько раз в хранимой функции под разными псевдонимами, даже если эти ссылки находятся в разных операторах внутри функции. Это может произойти для временных таблиц, созданных за пределами хранимых функций, и ссылающихся на них в разных вызывающих и вызываемых функциях.

  • Если временная таблица создается с тем же именем, что и существующая не временная таблица, то не временная таблица скрывается до тех пор, пока временная таблица не будет удалена, даже если таблицы используют разные движки хранения.

  • Известны проблемы при использовании временных таблиц с репликацией. Дополнительную информацию можно найти в Разделе 19.5.1.32, «Репликация и временные таблицы».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/temporary-table-problems.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API