防止工作坊预约超额是面向已能查询和修改简单表的学习者的 PostgreSQL 项目课程。你将完成真实预约,复现一个名额产生两条确认的情况,并交付可复用的 SQL,让整组预约全部成功,或完全不改变数据。
两节引导实验讲解正常预约流程、真实锁等待、事务恢复和保存的原子预约语句。一节独立挑战更换活动、人数和柜台操作顺序。每个单元都有独立准备的数据;最终作品是你的 SQL 和真实预约台账。
你将学到什么
- 将每组已确认预约与准确的人数、剩余容量对应起来。
- 用两个真实数据库连接复现依据过期余量做出的判断。
- 完成条件式名额申请,并用 RETURNING 返回的行创建确认。
- 观察一个请求等待,同时让另一场工作坊继续接受预约。
- 区分名额不足和 SQL 错误,验证确认写入失败会回滚名额申请。
- 恢复已中止的事务,保留原有预约、工作坊信息和预备工具。
本课程适合谁
本课程适合希望通过真实数据库操作理解具体并发问题的 SQL 学习者和初级应用开发者。
前置知识:基本终端导航、PostgreSQL 连接,以及 SELECT、WHERE、INSERT 和 UPDATE。事务、行锁、psql 变量、整数类型转换和修改数据的公用表表达式都会在使用前讲解。
学习环境:浏览器中已准备好 PostgreSQL 和合成工作坊数据。Workshop Desk 提供 shell,Desk A 和 Desk B 提供同一台机器上同一数据库的独立原生 psql 连接。你只需编写 SQL,无需开发 Python 程序或网站。
常见问题
需要提前理解数据库锁吗?
不需要。先完成正常预约,再观察受控的超额预约和真实锁等待,最后应用安全方法。课程要求具备上面列出的 SQL 基础。
最终交付什么?
可复用的 reserve.sql 文件和真实的整组预约确认;对每场工作坊,已预约人数加剩余名额应等于容量。功能检查还会保护原有记录,并在不同的隔离数据上运行你未经改写的 SQL。
这是否涵盖完整的生产预约平台?
不涵盖。你将在单个 PostgreSQL 数据库中练习 READ COMMITTED 事务。本项目不涉及支付、自动重试、过期占位和分布式协调。挑战要求独立组合引导实验已经教授的机制。




