C# 存储过程日期验证不检查特定ID的现有日期

C# 存储过程日期验证不检查特定ID的现有日期,c#,asp.net,sql,sql-server,stored-procedures,C#,Asp.net,Sql,Sql Server,Stored Procedures,此存储过程用于检查任何用户都无法应用的日期验证 离开的时间与 在同一时间段中应用上一个。 这是正常工作。 但是,如果任何用户想要更新休假期限,那么它就无法工作 如用户之前申请休假-2013年5月12日至2013年5月19日 而在leave表中唯一的字段registerLeaveId是14 如果用户希望更新2013年5月14日至213年5月16日的休假期限 相同的registerLeaveID然后此存储过程比较新的leave 此注册表的日期leaveID12日期也是 如何停止以不使用registe

此存储过程用于检查任何用户都无法应用的日期验证 离开的时间与 在同一时间段中应用上一个。 这是正常工作。 但是,如果任何用户想要更新休假期限,那么它就无法工作

如用户之前申请休假-2013年5月12日至2013年5月19日 而在leave表中唯一的字段registerLeaveId是14

如果用户希望更新2013年5月14日至213年5月16日的休假期限 相同的registerLeaveID然后此存储过程比较新的leave 此注册表的日期leaveID12日期也是

如何停止以不使用registerleaveID日期检查日期验证

CREATE PROCEDURE dbo.Test
@startdate datetime,@enddate datetime,@Userid int ,@Registerid

AS
BEGIN
SELECT  Count(*)  FROM leave 
WHERE 
(

(UserID=@userid)

 AND 

 (
      (@startdate BETWEEN StartDate AND EndDate)
      OR 
      (@enddate BETWEEN StartDate AND EndDate) 
      OR
        (
            (@startdate <= Startdate AND @enddate>=EndDate)
        )
  )

)

END
这可能会有帮助

CREATE PROCEDURE Test
@startdate DATETIME, @enddate DATETIME, @Userid INT, @Registerid INT
AS
BEGIN
    SELECT Count(*)
    FROM   leave
    WHERE  ((UserID = @userid)
            AND ((@startdate BETWEEN StartDate AND EndDate)
                 AND (@Registerid <> Registerid)
                 OR (@enddate BETWEEN StartDate AND EndDate)
                 OR ((@startdate <= Startdate
                      AND @enddate >= EndDate))));
END
CREATE PROCEDURE usp_AddTestData_UsingExists
(
    @Name varchar(50),
    @Qualification varchar(50)
) 
AS
DECLARE @Result int
BEGIN TRANSACTION 
IF EXISTS
(
    SELECT NULL
    FROM
        TestData WITH (UPDLOCK)
    WHERE
        [Name] = @Name AND
        Qualification = @Qualification
)
    BEGIN
        SELECT @Result = -1
    END
ELSE
    BEGIN
        INSERT INTO TestData
        (
            [Name],
            Qualification
        )
        VALUES
        (
            @Name,
            @Qualification
        )
        SELECT @Result = @@ERROR
    END
IF @Result <> 0
    BEGIN
        ROLLBACK
    END