Spec-Zone.ru › MySQL 8.4

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

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

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

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

  • Команда 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.31, «Репликация и временные таблицы».

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

Spec-Zone.ru

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