次のリストは、TEMPORARY
テーブルの使用に関する制限を示しています。
-
TEMPORARY
テーブルのタイプは、MEMORY
、MyISAM
、MERGE
、またはInnoDB
のみです。MySQL Cluster では、一時テーブルはサポートされません。
-
同じクエリーで
TEMPORARY
テーブルを複数回参照することはできません。たとえば、次のステートメントは動作しません。mysql> SELECT * FROM temp_table, temp_table AS t2; ERROR 1137: Can't reopen table: 'temp_table'
このエラーは、ストアドファンクション内で別のエイリアスで一時テーブルが複数回参照された場合にも発生します。これは、ファンクション内の別のステートメントで参照されていても発生します。
SHOW TABLES
ステートメントではTEMPORARY
テーブルは一覧表示されません。-
RENAME
を使用してTEMPORARY
テーブルの名前を変更することはできません。ただし、代わりにALTER TABLE
を使用できます。mysql> ALTER TABLE orig_name RENAME new_name;
レプリケーションで一時テーブルを使用する場合の既知の問題があります。詳細は、セクション17.4.1「レプリケーションの機能と問題」を参照してください。
-
一時テーブルがストアドファンクションの外部で作成されて、複数の呼び出し元関数および呼び出し先関数で参照される場合は、次のエラーが発生することがあります。
ERROR 1137: Can't reopen table: 'temp_table'