我需要帮助,我有一个用于插入日历中显示的事件的存储过程,我打算做的是验证我是否在同一日期的ID_SALA 2或ID_SALA 3中有一个事件不应该有相同的开始和结束时间。
我的ID_SALA只有2行:
ID_SALA | Name
2 | AUDITORIO
3 | SALA VIRTUAL
我的格式日期为:YYYY/MM/DD
我的开始和结束参数是:
@START_TIME NVARCHAR(5) i insert this 11:00
@END_TIME NVARCHAR(5) i insert this 12:00
以下是活动日历的图片
My event calendar http://oi62.tinypic.com/97r921.jpg
@DESCRIPCION NVARCHAR(500),
@ID_SALA INT,
@ID_TIPO_SOLICITANTE INT,
@DATE SMALLDATETIME,
@START_TIME NVARCHAR(5),
@END_TIME NVARCHAR(5),
@ID_PRESTATARIO INT,
@ID_USUARIO INT,
@SOLICITANTE NVARCHAR(150),
@AUTORIZACION INT
AS
SET NOCOUNT ON
DECLARE @ID_PERIODO INT
SELECT @ID_PERIODO = ID_PERIODO FROM CAT_PERIODOS WHERE ACTIVO = 1
INSERT INTO PRESTAMO_SALA
(DESCRIPCION, ID_SALA, ID_TIPO_SOLICITANTE, FECHA_PRESTAMO, HORA_INICIO, HORA_FIN, ID_PRESTATARIO,
ID_USUARIO, ID_PERIODO, FECHA_REG, SOLICITANTE, ID_AUTORIZACION)
VALUES
(@DESCRIPCION, @ID_SALA, @ID_TIPO_SOLICITANTE, @DATE, @START_TIME, @END_TIME, @ID_PRESTATARIO, @ID_USUARIO,
@ID_PERIODO, GETDATE(), @SOLICITANTE, @AUTORIZACION)
SELECT @@IDENTITY AS ID_PRESTAMO_SALA
抱歉我的英文
答案 0 :(得分:0)
您可以在存储过程的顶部添加一个检查,以查看该位置是否存在与新事件重叠的事件。
IF EXISTS (
SELECT 1
FROM PRESTAMO_SALA PS
WHERE PS.START_TIME <= @END_TIME
AND PS.END_TIME >= @START_TIME
AND PS.[DATE] = @DATE
AND PS.ID_SALA = @ID_SALA
)
... RAISE ERROR ...