2016-08-16 11 views
-1

私は2つのテーブルuserとeventを持っています。 ユーザーはイベントに参加することができますが、は1つだけです。すべてのイベントには独自の能力があります。キャパシティシステムにイベント登録する最も良い方法は?

例:

イベント#1には20人の制限があります。 イベント#2には13人の制限があります。


イベントのIDを格納する「イベント」列がユーザーテーブルにあります。 一方、イベントテーブルには「制限」列があります。

これを達成する最も良い方法は何ですか?

私は途中でphpmyadminを使用しています。あなたが必要なもの

答えて

1

はおおよそ次のとおりです。

update users set event_id = 'foo' 
where user_id = 'user3892111' 
and exists (select 1 from events 
      where event_id = 'foo' 
      and capacity > (select count(event_id) from users 
           where event_id = 'foo') 
); 

問い合わせが行を更新したりしませんいずれか、where句によります。これは単一のSQLステートメントであるため、アトミックです。つまり、2人のユーザーが最後の座席を取得できる競合条件はありません。クエリの影響を受ける行の数が0か1かを確認するだけです。

関連する問題