oracle数据库表1
id beginTime endtime
1 2009-1-1 2009-2-1
2 2009-2-2 2009-3-1
3 2009-6-1 2009-7-1
4 2009-8-1 2009-11-1
再插入记录时,先判断beginTime 和endtime 不能交叉。
例如:beginTime :2009-2-4 ,endtime :2009-3-2就不能插入,因为与id=2的交叉了
      beginTime :2008-2-4 ,endtime :2009-12-2就不能插入,因为包含了以上的记录。beginTime :2009-3-4 ,endtime :2009-5-2
beginTime :2008-3-4 ,endtime :2008-5-2
beginTime :2009-12-4 ,endtime :2009-12-24
以上这三条都可以插入。用sql应该如何判断呢?请指点!
      

解决方案 »

  1.   

    不用存储过程 就用sql不能实现么 ?
      

  2.   

    如果你是要程序里控制,可以这样
    select count(*) into flag
    from 表1
    where (begintime between new_begintime and new_endtime) or 
    (endtime between new_begintime and new_endtime) or
    ( new_begintime  between begintime and endtime) or
    ( new_endtime  between begintime and endtime)如果flag>0,则不插入,=0则插入