MySQL で既存の非 TEMPORARY テーブルと同名の TEMPORARY テーブルを作成する方法

テストで TEMPORARY テーブルを使いたかったときの話。

Good

CREATE TEMPORARY TABLE
    tbl_name
SELECT
    *
FROM
    tbl_name
LIMIT 0                 -- テーブルだけを作成したいときに

ただし

CREATE TABLE ... SELECT は自動的にインデックスを作成しません。

http://dev.mysql.com/doc/refman/5.1/ja/create-table.html

なので、インデックスが必要な場合には別途作成する必要がある。

Bad

LIKE だと名前が重複しているぞ、というエラーになった。

CREATE TEMPORARY TABLE
    tbl_name
LIKE
    tbl_name