浏览 1609 次
锁定老帖子 主题:会议室预定系统数据插入
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-06-11
轻量级的解决方案是,把查询和插入并作一步进行,下面是建表sql,尽量简化。 create table room(id number(30)); create table book(roomid number(30),user varchar2(60),startTime date,endTime date); 插入初始数据: insert into room (id) values (1); 插入预定数据的时候,可以把insert,select,not exists等关键字结合起来使用。 declare time1 date; time2 date; begin time1:=to_date('2012-6-15 11:30:00', 'yyyy-mm-dd hh24:mi:ss'); time2:=to_date('2012-6-15 13:30:00', 'yyyy-mm-dd hh24:mi:ss'); insert into book (roomid, username, startTime, endTime) select 1, 'sunwen', time1, time2 from dual where not exists ( select 1 from book b where (b.starttime<=time1 and b.endtime>=time1 and b.roomid=1) or (b.starttime>=time1 and b.starttime<=time2 and b.roomid=1) ); commit; end; 这样就可以避免预定同一件会议室在时间上与别人有冲突,当有冲突的时候,插入0条记录,根据返回值就可以判断插入是否成功。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |