删除外键

时间:2015-11-03 22:54:57

标签: c# sql-server

我试图删除表格NatureCharge中引用Famille表主键的外键,因为我需要在Famille中删除多行

要删除多行,它可以工作,但是在NatureCharge中删除行的问题 表格看起来像那样 enter image description here
守则:

first:int -> second:int -> int

错误显示为line(用于Famille部分)

cmd.ExecuteNonQuery();

附加信息:DELETE语句与REFERENCE约束“FK_NatureCharge_Famille”冲突。冲突发生在数据库“Tresorerie”,表“dbo.NatureCharge”,列'IdFam'。

1 个答案:

答案 0 :(得分:2)

您忘记在此处添加@IdNat参数:

 using (SqlCommand command = new SqlCommand("DELETE NatureCharge FROM NatureCharge n INNER JOIN Famille f on n.IdFam = f.IdFam WHERE IdNat = @IdNat", con))
 {
     // you haven't added the @IdNat parameter
     command.ExecuteNonQuery();
 }

如果您整理代码,这将更加明显。

string sql = "DELETE NatureCharge 
              FROM NatureCharge n 
              INNER JOIN Famille f on n.IdFam = f.IdFam 
              WHERE IdNat = @IdNat";
                            ^^^^^^
using (SqlCommand command = new SqlCommand(sql, con))
{
    // you haven't added the @IdNat parameter
    command.ExecuteNonQuery();
}