TeacherId不能有两条相等的记录



我正在用c#开发一个应用程序,我正在做一个表单,在那里我可以为每个老师添加他将拥有的类和课程,但我不希望用户,对于同一个老师,被允许添加两次或更多相同的类,从而不必要地创建重复的记录,我尝试了一个查询我的代码来验证类已经分配给所选的老师。

表的结构是:

  • profsoresturmas:表名;
  • Id:每条记录的Id,主键;
  • 教授ID:教师ID,教师表中的外键;
  • 教授名:教师姓名;
  • CursoId:课程Id,课程表中的外键;
  • CursoNome:课程名称;
  • TurmaId:类的Id,类表中的外键;
  • TurmaNome: class 's Name;

这是我试过的代码:

----------------------------Part of the code to do the verification-------------------------
Con.Open();
SqlCommand check_Class_Name = new SqlCommand("SELECT COUNT(TurmaNome) FROM ProfessorTurmas WHERE ProfessorNome = @ProfessorNome", Con);
check_Class_Name.Parameters.AddWithValue("@ProfessorNome", textBox_NameTeacher.Text);
int ClassExists = (int)check_Class_Name.ExecuteScalar();
Con.Close();
else if(ClassExists > 0)
{
MessageBox.Show("Error");
Con.Close();
return;
}
else
-----------------From here is the code to insert the record into the table------------------
{
try
{
db.adicionarTurmasProfessores(combobox_IdTeacher.SelectedValue.ToString(), textBox_NameTeacher.Text, comboBox_IdCurso.SelectedValue.ToString(), textBox_NameCurso.Text, combobox_IdTurma.SelectedValue.ToString(), textBox_NameTurma.Text);
MessageBox.Show("Registo Adicionado!");
DisplayTeachers();
Clear();
}
catch (Exception Ex)
{
if (gender == "Masculino")
{
DialogResult dr = MessageBox.Show("O professor " + textBox_NameTeacher.Text + " já pertence a essa turma! nPretende ver a mensagem de erro completa?", "Erro!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.Yes)
{
MainClass.ShowMSG(Ex.Message, "Error...", "Error");
Con.Close();
return;
}
else
{
Con.Close();
return;
}
}
else
{
DialogResult dr = MessageBox.Show("A professora " + textBox_NameTeacher.Text + " já pertence a essa turma! nPretende ver a mensagem de erro completa?", "Erro!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dr == DialogResult.Yes)
{
MainClass.ShowMSG(Ex.Message, "Error...", "Error");
Con.Close();
return;
}
else
{
Con.Close();
return;
}
}
}
}

design Table图片

插入教师记录的表单图像

这段代码的问题是,当我尝试添加,例如,到Teacher1 Class1,并且该记录已经存在,弹出错误消息,但是如果我尝试添加Teacher1 Class1,并且已经存在一个分配了Class1的不同教师,它也弹出错误消息,并且我不想使类列唯一,我只想验证是否已经有Class1。

不应该弹出的错误图片

如果你能建议一个查询,使该功能,我将不胜感激。

您需要的是复合主键:由两个或多个属性组成的主键。

应该同时使用教师Id和班级Id作为主键。

键定义的SQL示例:

PRIMARY KEY (proforid, TurmaId).

相关内容

最新更新