将多行与 SQL Server 2008 中的一行进行比较
本文关键字:比较 一行 SQL Server 2008 | 更新日期: 2023-09-27 18:36:09
我有一个 asp.net 的C#项目,用于研究案例,"大学网站"
我有一个名为 Agenda
的表,它包含 9 列
[AgendaId] uniqueidentifier
[MatirelId]
[InstructorId]
[ClassId]
[AddedDate]
[Semester]
[StartTime]
[EndTime]
[DaySchedule]
它显示了可用的材料,哪个教师,在哪几天,在什么时间开始和结束,在哪个班级,在同一学期。
我需要什么:当我添加新行时,我应该检查它是否是现有行的重叠。如果它有重叠,给我一个错误。
PS:instructorId,MatirelId和ClassId是其他表的外键。
最好在 SQL Server 2008 中的存储过程中执行此操作。
亲切和最好的问候
假设所有列都必须匹配重复项 - 那么你将使用这样的东西:
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
阅读出色的 MSDN 文档,了解如何准确调用RAISERROR
以导致从存储过程中引发错误!