求解,如何實現該功能

sony33p89 2014-08-25 11:30:51
某表有三個欄位
ID START_TIME END_TIME
1 2014/8/25 11:24 2014/8/25 12:24

現要實現如下功能:
現在我要insert第二條記錄,但是第二條記錄的start_time和end_time不能落在第一條記錄的兩個時間之間.(不能有交集)
同理,第三條記錄的start_time和end_time不能落在第一條和第二條的時間區間內,
...全文
120 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bw555 2014-08-25
  • 打赏
  • 举报
回复
写了个过程,参考,设定你的表名为T
create or replace procedure TEST(P_ID in NUMBER,P_STARTTIME in DATE,P_ENDTIME IN DATE ) is
  i NUMBER;
BEGIN
  --检查是否已经存在与此时间段重复的记录
  SELECT COUNT(1) INTO i 
  FROM T
  WHERE START_TIME<P_ENDTIME AND END_TIME>P_STARTTIME;
  IF i=0 THEN--如果不存在则插入数据
    INSERT INTO T(ID,START_TIME,END_TIME)
    VALUES(P_ID,P_STARTTIME,P_ENDTIME);
    commit;
  ELSE
    --不满足条件时的其他操作
    null;
  END IF;
END;
CT_LXL 2014-08-25
  • 打赏
  • 举报
回复
引用 1 楼 sony33p89 的回复:
簡單來說,相當於每條記錄的時間段都是唯一的,不能重複
新插入的记录not between start_time and end_time 这里的start_time和end_time是已经存在的记录
sony33p89 2014-08-25
  • 打赏
  • 举报
回复
簡單來說,相當於每條記錄的時間段都是唯一的,不能重複
CT_LXL 2014-08-25
  • 打赏
  • 举报
回复
引用 4 楼 sony33p89 的回复:
[quote=引用 2 楼 zlloct 的回复:] [quote=引用 1 楼 sony33p89 的回复:] 簡單來說,相當於每條記錄的時間段都是唯一的,不能重複
新插入的记录not between start_time and end_time 这里的start_time和end_time是已经存在的记录[/quote] 但是斑斑,如果我要插入幾十條上百條數據...那這個not between and的條件不是要寫很多次??[/quote] 只是给了你一个思路而已,你可以将你插入的数据作为两个参数。然后通过程序来处理
sony33p89 2014-08-25
  • 打赏
  • 举报
回复
引用 2 楼 zlloct 的回复:
[quote=引用 1 楼 sony33p89 的回复:] 簡單來說,相當於每條記錄的時間段都是唯一的,不能重複
新插入的记录not between start_time and end_time 这里的start_time和end_time是已经存在的记录[/quote] 但是斑斑,如果我要插入幾十條上百條數據...那這個not between and的條件不是要寫很多次??

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧