C# 在SQL Server 2008中将多行与一行进行比较

C# 在SQL Server 2008中将多行与一行进行比较,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我有一个asp.net C#项目,用于研究案例“大学网站” 我有一个名为Agenda的表,它包含9列 [AgendaId] uniqueidentifier [MatirelId] [InstructorId] [ClassId] [AddedDate] [Semester] [StartTime] [EndTime] [DaySchedule] 它显示了什么材料是可用的,哪位老师,在哪几天,在哪段时间开始和结束,在哪节课,在同一学期 我需要的是:当我添加新行时,我应该检查它是否与现有行重

我有一个asp.net C#项目,用于研究案例“大学网站”

我有一个名为
Agenda
的表,它包含9列

[AgendaId]   uniqueidentifier
[MatirelId]
[InstructorId]
[ClassId]
[AddedDate]
[Semester]
[StartTime]
[EndTime]
[DaySchedule]
它显示了什么材料是可用的,哪位老师,在哪几天,在哪段时间开始和结束,在哪节课,在同一学期

我需要的是:当我添加新行时,我应该检查它是否与现有行重叠。 如果有重叠,请给我一个错误

PS:instructorId、MatireID和ClassId是其他表的外键

更愿意将其放在SQLServer2008中的存储过程中


致以最诚挚的问候

假设所有的列都必须匹配一个副本,那么您可以使用如下方式:

CREATE PROCEDURE dbo.InsertNewRow 
    @AgendaId      uniqueidentifier.,
    @MatirelId     int,   -- you did not mention what *types* those columns have - adapt as needed!
    @InstructorId  int,
    @ClassId       int,
    @AddedDate     datetime,
    @Semester      int
    @StartTime     time(7),
    @EndTime       time(7),
    @DaySchedule   int
AS BEGIN
   IF EXISTS (SELECT * FROM dbo.Agenda 
              WHERE MatirelId = @MatirelId
                AND InstructorId = @InstructorId
                AND ClassId = @ClassId
                AND Semester = @Semester
                AND StartTime = @StartTime
                AND EndTime = @EndTime
                AND DaySchedule = @DaySchedule)
        RAISERROR .......
        RETURN

   INSERT INTO dbo.Agenda(AgendaId, MatirelId, InstructorId, ClassId, 
                          AddedDate, Semester, StartTime, EndTime, DaySchedule)
   VALUES(@AgendaId, @MatirelId, @InstructorId, @ClassId, 
          @AddedDate, @Semester, @StartTime, @EndTime, @DaySchedule)
END   

阅读本文了解如何准确地调用
RAISERROR
以从存储过程中抛出错误

您遇到的问题是什么?当我添加新记录时,请检查它是否与表上以前的记录重复,以其他方式检查所有字段{除2个字段“AgnedaId,AddedDate”无需检查}如果它与新记录重复,您是否在寻找精确的重复项,或者同一材料/讲师/班级/学期的开始/结束时间重叠?尼古拉·马尔科维诺维奇:是的,重叠了。:p当你想通知某人时,在他/她的名字前面写上
@
。那么,你的问题是否解决了?想想它会工作,损坏,我会试试,给你我的反馈,谢谢。马尔科斯。在WHERE子句中,我会考虑零点检查,如果列可以包含空值。@ J.NIS:是真的。问题不是很具体和清楚的-好点,虽然!亲爱的马克:我说的是重叠,如果有重叠与否。!