1

私はasp.net C#プロジェクトを持っています。研究ケース、「大学のウェブサイト」です。

という名前のテーブルがAgendaあり、9 列が含まれています

[AgendaId]   uniqueidentifier
[MatirelId]
[InstructorId]
[ClassId]
[AddedDate]
[Semester]
[StartTime]
[EndTime]
[DaySchedule]

また、どの教材が利用可能か、どの講師が、どの曜日に、どの時間に開始および終了するか、同じ学期のどのクラスであるかを示します。

必要なもの: 新しい行を追加するときは、既存の行と重複しているかどうかを確認する必要があります。重複している場合は、エラーを出してください。

PS:instructorId、MatirelId、および ClassId は、他のテーブルへの外部キーです。

SQL Server 2008 のストアド プロシージャで作成することをお勧めします。

よろしくお願いいたします

4

1 に答える 1

2

重複のためにすべての列が一致する必要があると仮定すると、次のようなものを使用します。

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、ストアド プロシージャからエラーをスローする正確な呼び出し方法を学んでください。

于 2012-06-04T13:27:50.647 に答える