ワイズリマインダー

テーブル結合時のFOR UPDATE

複数のテーブルを結合し、片方のテーブルだけにFOR UPDATEをつかいたい場合、
テーブルを結合(JOIN)するのではなく、サブクエリを利用する

SELECT `lockTable` . `no`
  FROM `lockTable`
 WHERE EXISTS(SELECT `unlockTable` . `no`
                FROM `unlockTable`
               WHERE `unlockTable` . `lockTableNo` = `lockTable` . `no`
                 AND `unlockTable` . `hoge` = 'true'
       )
   FOR UPDATE
;

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください