Transactions 当我们已经有在线订购交易时,我们是否需要记录级锁定?(指音乐会门票或机票预订)

Transactions 当我们已经有在线订购交易时,我们是否需要记录级锁定?(指音乐会门票或机票预订),transactions,rdbms,database,record-locking,Transactions,Rdbms,Database,Record Locking,对于在线订购音乐会座位或机票,我们需要记录级别锁定还是交易足够好 对于音乐会门票(比如,座位号20B)或机票(例如,即使超额预订,限制为210),我认为网站在显示购票屏幕时无法锁定任何记录或开始交易 但在用户单击“确认购买”后,服务器应开始一项交易,购买座位号20B,并尝试提交 如果另一个用户已经在以前的事务中购买了座位20B,那么当前事务将失败的是“提交”部分 所以。。。我们不需要记录级锁定?事务是否总是序列化(一个接一个),因此我们可以确定不存在“竞争条件”?在什么情况下需要记录级锁定?在插

对于在线订购音乐会座位或机票,我们需要记录级别锁定还是交易足够好

对于音乐会门票(比如,座位号20B)或机票(例如,即使超额预订,限制为210),我认为网站在显示购票屏幕时无法锁定任何记录或开始交易

但在用户单击“确认购买”后,服务器应开始一项交易,购买座位号20B,并尝试提交

如果另一个用户已经在以前的事务中购买了座位20B,那么当前事务将失败的是“提交”部分


所以。。。我们不需要记录级锁定?事务是否总是序列化(一个接一个),因此我们可以确定不存在“竞争条件”?在什么情况下需要记录级锁定?

在插入行之前,您可以检查具有相同SeatId的条目存在的位置。如果存在,则回滚,否则插入行并提交。我甚至不是CoIdentit,我认为如果服务非常繁忙,您可能需要在开始插入操作之前锁定

然而,还有一个令人兴奋的第二选择

您维护一个
showId
seatId
用这两个做一个索引。并在此索引上创建唯一约束。 现在使用任何锁定启动事务。 如果存在重复。由于唯一约束,它显然会失败。而提交将不成功

尼尔