Oracle - Intervals时间戳

时间:2014-02-24 08:01:57

标签: oracle datetime intervals

管理Oracle中的时间间隔的最佳做法是什么?例如:我有一个房间,将在8:15至9:00之间租用。所以我至少有两个字段:dt_start和dt_end,我想。我不能允许在8:45到9:20之间输入租金。那么最好的桌面结构怎么样呢?感谢

2 个答案:

答案 0 :(得分:1)

对于实施这一目标的最佳方式,尚无明确的共识。答案肯定取决于你的具体情况。选项包括:

  1. 对ROOM_ID和时间块具有唯一约束的表。如果应用程序使用相当大的块分配相当少的时间,这只是现实的。例如,如果一个房间最多只能分配一周,每次5分钟。但是如果保留到第二个,并且可以跨越一年,那么一次预订需要3100万行。
  2. 触发。如果可能,请避免使用此解决方案。在一致且并发的触发器中实现此逻辑的可能性非常低。
  3. 物化视图。这是我首选的方法。例如,请参阅我的回答here
  4. 由应用程序强制执行。这仅适用于应用程序可以序列化访问且不允许使用临时SQL的情况。
  5. 商业工具。例如,RuleGen

答案 1 :(得分:0)

BEFORE INSERT TRIGGER是满足您需求的最佳方式。

在触发器中,确定新时间与特定房间的当前时间没有冲突,如果是,您可以Rais Error,否则请更新。