mysql:4436
From: Takeharu Masuda <Takeharu Masuda <tac@xxxxxxxxxx>>
Date: Fri, 05 Oct 2001 17:45:28 +0900
Subject: [mysql 04436] テーブルの差し替えとロック
定期的にバッチで内容を更新する、サマリーテーブル tbl_A があります。 更新のロジックの関係で、データを全部破棄して作り直す必要があります。 テーブル再構築中に使えないと困るため、次のようなロジックを考えています。 1. tbl_A と同一構造を持つ tbl_B を作成 2. tbl_B に、最新のデータでサマリーを作成 3. tbl_A を削除( drop table tbl_A) 4. tbl_B を tbl_A にリネーム( rename table tbl_B to tbl_A ) 3. および 4. を実行している最中に、他からのアクセスを禁止するため、テー ブルをロックしたいのです。 この場合、 LOCK TABLES 〜 UNLOCK TABLES は使用可能でしょうか? 仮に LOCK TABLES tbl_A WRITE としても、ロック処理中にそのテーブルその ものが消えるので、ここでロックが解除されることになってしまうような気がし ます。直後に rename table するとしても、その瞬間だけはアクセスが可能になっ て、クライアントに「テーブルがない」と判断されてしまいます。 まあ、クライアント側でエラーチェックして、テーブルがない(=SQL エラー になる)ときにはちょっと待って再実行すればいいことではあるのですが。 -- written by Takeharu Masuda <tac@xxxxxxxxxx> with Thinkpad 235 - called "Chandra II" / "Clavius" at 2001/10/05 17:34:12
-> 4436 2001-10-05 17:45 [Takeharu Masuda <tac] テーブルの差し替えとロック 4440 2001-10-05 19:54 ┗[YONEMOTO Kazumasa <y] 4445 2001-10-06 00:48 ┗[Takeharu Masuda <tac]