外部精选
软件工程
#开发者实时流开发者用数据库约束而非应用代码防止会议室预订冲突
来源标题:Database Lives in My House
开发者展示了用数据库 schema 中的 PRIMARY KEY (room, hours WITHOUT OVERLAPS) 和 FOREIGN KEY (room, PERIOD hours) 直接阻止会议室重复预订和超出营业时间的预约,应用层不做检查。由于约束在数据库层面执行,不存在竞态条件,每次失败尝试均被回滚,日历不会改变。
Hacker News 最新luispa2026/11/2 · 昨天1 分钟阅读
这个来源的 RSS 只提供摘要,下面是原文导语;完整论述请点「打开原文」。
数据库就住在我家。
两条规则存在于 schema 之中。PRIMARY KEY (room, hours WITHOUT OVERLAPS) 用于防止冲突,FOREIGN KEY (room, PERIOD hours) 则确保每条预订都落在房间的开放时间内。应用本身不做任何校验,因此也就没有竞态可输。下面选中的时段存在冲突,按下按钮即可看到真正的报错。然后可以试试 17:00 到 20:00,看看超出闭店时间会怎样,或者选一个空闲时段。每次尝试都会被回滚,所以日历始终不会改变。
本条为导读摘要,完整论述请以原文为准。