You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle APEX中防止会议室预订时间重叠的SQL查询需求

Oracle APEX会议室预订冲突检测SQL修正

你的现有查询未覆盖新预订区间完全包含已有预订的冲突场景,要解决这个问题,需要重新梳理时间区间重叠的判断逻辑——只要两个时间区间存在任何形式的重叠,就判定为冲突。

问题分析

现有查询的条件逻辑有误,它试图通过反向判断排除无冲突情况,但漏掉了新区间完全包裹已有区间的场景。正确的冲突判断应该聚焦于「区间是否存在重叠」,同时必须限定是同一个会议室(避免不同会议室的时间重叠误判)。

修正后的查询

SELECT RES_ID_LOC 
FROM WER_RES
WHERE RES_ID_LOC = :TRY_RESERVE_ROOM_ID -- 限定冲突检测仅针对同一会议室
  AND CAST(:TRY_RESERVE_START_DATE AS DATE) < CAST(RES_DATE_DEPART AS DATE)
  AND CAST(:TRY_RESERVE_END_DATE AS DATE) > CAST(RES_DATE_ARRIVE AS DATE)

逻辑说明

这个查询会返回所有与新预订存在时间重叠的同会议室已有预订,覆盖所有冲突场景:

  • 新预订完全包含已有预订(如已有[2-5],新[1-7]):1 < 5 且 7 > 2,满足条件,检测到冲突
  • 已有预订包含新预订(如已有[1-7],新[2-5]):2 <7 且 5>1,满足条件
  • 新预订与已有预订部分重叠(如已有[2-5],新[3-6]或[1-3]):同样满足条件

若查询返回结果,说明存在冲突,不允许提交新预订;若无返回结果,则可正常完成预订。

内容的提问来源于stack exchange,提问作者ProgrammingPadawan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 06:30:37