映画予約システム用に次の疑似 MySQL があります。
テーブルムービー:
id int auto_increment not null,
name varchar(100) not null,
.....
テーブル MovieSched:
movie_id foreign key refers to Movie,
sched_id int auto increment,
date & time,
max_size
表 MovieSchedSignUp:
sched_id,
user_id
すべての映画スケジュールには、サインアップできるユーザーの max_size があります。ユーザーを登録するには、MovieSchedSignUp に行を挿入します。
問題は次のとおりです。スケジュールが「オーバーブッキング」されないようにしながら、MovieSchedSignUp に行を挿入するにはどうすればよいですか (サインアップ数 <= max_size)。
具体的には、ユーザーをスケジュールに登録するには、どのようなクエリを使用する必要がありますか? また、スケジュールがいっぱいかどうかを確認するにはどうすればよいですか (登録が成功したかどうかをユーザーに伝えることができます)。これらには、ある種のアトミック操作、おそらくトランザクションが必要であることに注意してください。
これを行うための最も効率的な方法は何ですか?