end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

mysqlの一次テーブル(temporary table)は自己参照不可

perlmysqlのテンポラリテーブルに対して、自己参照(副問合せ)を行ったら、次のようなerror.

DBD::mysql::st execute failed: Can't reopen table: 'h'
at /home/xxxx/batch/../lib/XXXX/Model/Case/XXXX.pm line 116.

http://dev.mysql.com/doc にきちんと記載されていますね

・テンポラリテーブルの型は、HEAP、ISAM、MyISAM、 MERGE、InnoDB のみ。
・テンポラリテーブルは同じクエリで 2 回以上使用できない。 たとえば、以下は動作しない。
mysql> SELECT * FROM temporary_table, temporary_table AS t2;

http://dev.mysql.com/doc/refman/4.1/ja/temporary-table-problems.html

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