会议室预定表的创建问题

时间:2021-08-16 19:35:06
应该怎么创建会议室预定表,才能使得得预定预定时不会发生预定时间不会出现交叉
表有以下列:BH(预定流水号)people(预定人),room(预定房间),start_time(开始时间),end_time(结束时间),还应该添加什么列。预定表应该怎么创建才好,插入的SQL语句应该怎么样?

我想了很久都没有想到什么好的方法,只想到把room(预定房间),start_time(开始时间),end_time(结束时间),设为主键,再加上插入数据时要求是整点数且为一个钟(例如:9:00~10:00。10:00~11:00)

5 个解决方案

#1


预定流水号 作为主键就好了吧?

预定时间不会出现交叉还是在程序中控制吧.要么用触发器.

#2


引用 1 楼 srgcc 的回复:
预定流水号 作为主键就好了吧?

预定时间不会出现交叉还是在程序中控制吧.要么用触发器.

程序具体或者用触发器具体怎么做能说说吗?我没有什么思路!

#3


这样也行

declare @start_time datetime,@end_time datetime,@room int
set @start_time= ..
set @end_time= ..
set @room= ..

if (select count(*) from tb where room=@room and (@start_time between start_time and end_time or @end_time between start_time and end_time)) 
    print '可以预定'
else
    print '正在预定中'

#4



declare @start_time datetime,@end_time datetime,@room int
set @start_time= ..
set @end_time= ..
set @room= ..

if (select count(*) from tb where room=@room and (@start_time between start_time and end_time or @end_time between start_time and end_time))>0 
    print '可以预定'
else
    print '正在预定中'


少了一个东西

#5


start_time(开始时间),end_time 为这样的不妥当
(例如:9:00~10:00。10:00~11:00)

#1


预定流水号 作为主键就好了吧?

预定时间不会出现交叉还是在程序中控制吧.要么用触发器.

#2


引用 1 楼 srgcc 的回复:
预定流水号 作为主键就好了吧?

预定时间不会出现交叉还是在程序中控制吧.要么用触发器.

程序具体或者用触发器具体怎么做能说说吗?我没有什么思路!

#3


这样也行

declare @start_time datetime,@end_time datetime,@room int
set @start_time= ..
set @end_time= ..
set @room= ..

if (select count(*) from tb where room=@room and (@start_time between start_time and end_time or @end_time between start_time and end_time)) 
    print '可以预定'
else
    print '正在预定中'

#4



declare @start_time datetime,@end_time datetime,@room int
set @start_time= ..
set @end_time= ..
set @room= ..

if (select count(*) from tb where room=@room and (@start_time between start_time and end_time or @end_time between start_time and end_time))>0 
    print '可以预定'
else
    print '正在预定中'


少了一个东西

#5


start_time(开始时间),end_time 为这样的不妥当
(例如:9:00~10:00。10:00~11:00)