MSSQL使用外键删除对表的查询

时间:2015-11-10 11:18:45

标签: asp.net sql-server foreign-key-relationship

我有2张桌子

t1 - 分类 ID 名称

t2 - 产品 ID 名称 类别ID

我有一个外键并且它正在工作,但是当我想运行一个删除查询时(例如,由于外键,O不断收到错误。)

这是我的代码:

        protected void dlCategory_DeleteCommand(object source, DataListCommandEventArgs e)
{
    string Id = ((Label)e.Item.FindControl("Label1")).Text;
    string SQL = "DELETE FROM Categories WHERE PrimaryKey=@ID;";
    SqlCommand cmd = new SqlCommand(SQL, conn);
    cmd.Parameters.AddWithValue("@ID", Id);

    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();

    BindDL();
}

如果我删除了外键,它工作正常!

2 个答案:

答案 0 :(得分:0)

据我所知,你不能以主键作为参数运行查询,你需要做长期的工作。

string SQL = "DELETE FROM Categories WHERE PrimaryKey= '$Cat_ID';";

这里有类似的答案 Mysql Select record where PRIMARY key = x

答案 1 :(得分:0)

看起来您正在尝试从类别中删除记录,但该记录无法删除,因为Products表正在使用该记录。

如果你有一类衣服'和“T恤”的产品给出衣服类别,然后删除类别会给你一个数据错误,因为数据库现在不一致。

这是预期的功能。您可以修改SQL Server以使用级联删除,因此所有连接的记录也会被删除,但请谨慎使用。