私は次のテーブル構造を持っています。
reservation: (InnoDB)
------------------------------------------
id INT,
date DATE,
item_id INT,
slot VARCHAR(50);
PRIMARY KEY(id), UNIQUE KEY(item_id,date).
今、トランザクション内の予約テーブルで SELECT.....FOR UPDATE を使用して、特定の item_id の日付範囲 (例: 2012-06-15 から 2012-06-16) 内の特定の行をロックしようとしています。
SELECT availability FROM reservation WHERE item_id={$item_id} AND (date>='{$to_date}' AND date<='{$from_date}') FOR UPDATE
上記のステートメントを使用すると、日付範囲を超えても特定の item_id のすべての行がブロックされます。この UNIQUE KEY(item_id,date) も使用しています。
特定の item_id の特定の日付範囲のみをロックする方法は?
よろしく、
ラビ。