我有一个删除表中所有数据的方法,但是如果存在外键约束,这个方法就不能工作。如何检查是否存在引用约束,首先删除这些exist,然后继续删除指定表中的所有数据?
如果存在任何外键约束,则引发此异常:
“DELETE语句与引用约束冲突\”。冲突发生在数据库\\“、表\\”、列‘’。\r\n语句已终止。}
方法:
public int DeleteFromDatabase(SqlConnection sqlConnection, string tableName)
{
int success = 0;
string sqlTrunc = "Delete from " + tableName;
if (isSafeSqlConnection(sqlConnection))
{
using (sqlConnection)
{
SqlCommand cmd = new SqlCommand(sqlTrunc, sqlConnection);
sqlConnection.Open();
success = cmd.ExecuteNonQuery(); //<-exception when constraint exists.
sqlConnection.Close();
}
}
return success;
}
我需要知道的是,要么是删除约束、删除约束、恢复约束,要么是先删除引用的约束数据,然后继续删除表。无论哪种方式我都可以。
发布于 2015-11-05 07:52:34
你有几个选择:
EXEC sp_fkeys 'MyTable'
,然后先删除外键表中的所有行。请参阅How can I list all foreign keys referencing a given table in SQL Server?https://stackoverflow.com/questions/33548694
复制相似问题