[英]Delete foreign Key
我試圖刪除表 NatureCharge 中引用 Famille 表主鍵的外鍵,因為我需要刪除 Famille 中的多行
對於刪除多行,它有效,但在 NatureCharge 中刪除行的問題表看起來像這樣
編碼 :
private void DeleteFamBtn_Click(object sender, EventArgs e)
{
List<DataGridViewRow> selectedRows = (from row in DataGridViewFamille.Rows.Cast<DataGridViewRow>()
where Convert.ToBoolean(row.Cells["checkBoxColumn"].Value) == true
select row).ToList();
if (MessageBox.Show(string.Format("Do you want to delete {0} rows?", selectedRows.Count), "Confirmation", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
//delete Nature de Charge before delete Famille
foreach (DataGridViewRow row in selectedRows)
{
try
{
using (SqlConnection con = new SqlConnection(connstring))
{
con.Open();
using (SqlCommand command = new SqlCommand("DELETE NatureCharge FROM NatureCharge n INNER JOIN Famille f on n.IdFam = f.IdFam WHERE IdNat = @IdNat", con))
{
command.ExecuteNonQuery();
}
con.Close();
}
}
catch (SystemException ex)
{
MessageBox.Show(string.Format("An error occurred: {0}", ex.Message));
}
}
//Delete Famille
foreach (DataGridViewRow row in selectedRows)
{
using (SqlConnection con = new SqlConnection(connstring))
{
using (SqlCommand cmd = new SqlCommand("DELETE FROM Famille WHERE IdFam = @IdFam", con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@IdFam", row.Cells["IdFam"].Value);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
}
錯誤顯示與線(它是 Famille 部分)
cmd.ExecuteNonQuery();
附加信息:DELETE 語句與 REFERENCE 約束“FK_NatureCharge_Famille”沖突。 沖突發生在數據庫“Tresorerie”、表“dbo.NatureCharge”、“IdFam”列中。
您忘記在此處添加@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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.