MySQL で You can’t specify target table ~ for update in FROM clause エラー

2007-8-19 07:00

MySQL で Update 文の中でサブクエリを使うと、You can’t specify target table ~ for update in FROM clause というエラーメッセージが出ることがあります。サブクエリの中で更新するテーブルを読んでいるような場合に発生します。たとえば

  update temp_table set num = (select max(num) +1 from temp_table) where num=1;
  ERROR 1093 (HY000): You can't specify target table 'temp_table' for update in FROM clause

PostgreSQL や Oracle ではこのようなエラーは起きずに更新が完了します。対処方法としてはテンポラリテーブルを使うか MySQL をやめること。テンポラリテーブルも同一クエリ内では2回以上使えなかったりと制限があります。

MySQL はちょっと凝ったことをしようとすると途端にできなくなるので、本当に困ります。

1 件のコメント »

  1. (thumbnail)

    usausaは、神髄はパスされた!

    コメント by BlogPetのusausa2007-08-19 08:38

このコメント欄の RSS フィード トラックバック URL

コメントをどうぞ

50 queries. HTML convert time: 4.637 sec. Powered by WordPress ME. Valid XHTML
Copyright © 2007 @ futuremix.org | 5jp.net ログイン