gpt4 book ai didi

mysql - SQL:为什么我们需要交易来订票?

转载 作者:行者123 更新时间:2023-11-29 15:35:45 24 4
gpt4 key购买 nike

我了解到交易通常用于电影票预订网站,以解决并发购买问题。但是,我不明白为什么有必要。

如果同时有 2 个用户在同一个演出 (ID = 99) 上预订了同一个座位 (ID = 1),您不能简单地发出以下 SQL 命令?

UPDATE seat_db
SET takenByUserID=someUserId
WHERE showID=99 AND seatID=1 AND takenByUserID IS NOT NULL

正如我所看到的,这个SQL已经被原子执行了,不存在并发问题。数据库将设置 seat ID=1 给服务器收到请求的第一个用户,然后让第二个用户的请求失败。那么,为什么订票系统还需要交易呢?

最佳答案

当您将所有 DML 语句批处理到单个事务中时,通常您会告诉数据库一些事情:

  1. 使此操作(即预订电影票)成为“全有或全无”操作
    • 确保不留下任何孤立行并具有一致的数据
  2. 预先锁定所有关联的表,以便在操作运行时无法进行其他写入操作
    • 防止其他事务修改您当前操作想要访问的表
    • 防止死锁并允许通过中止其中一个锁定查询来继续处理

是否需要将 UPDATE Seat_db 请求包装在其自己的事务中取决于其前后执行的其他处理 (DML)。

关于mysql - SQL:为什么我们需要交易来订票?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58254527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com