C# 在SQL Server 2008中将多行与一行进行比较
我有一个asp.net C#项目,用于研究案例“大学网站” 我有一个名为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] 它显示了什么材料是可用的,哪位老师,在哪几天,在哪段时间开始和结束,在哪节课,在同一学期 我需要的是:当我添加新行时,我应该检查它是否与现有行重
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:是真的。问题不是很具体和清楚的-好点,虽然!亲爱的马克:我说的是重叠,如果有重叠与否。!