我有以下用于电影预订系统的伪 MySQL:
表电影:
id int auto_increment not null,
name varchar(100) not null,
.....
表电影时间表:
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)
具体来说,要为用户注册日程,我应该使用什么查询,以及如何检查日程是否已满(以便我可以告诉用户注册是否成功)?请注意,这些需要某种原子操作,可能是事务。
这样做最有效的方法是什么?