我有一个database
,它有三个表,并且在所有三个表中都有一个class_id列。我想删除class_id时,删除了包含class_id
我用了一种方法,但我不确定这种方式是标准的还是没有?
提示:表中的class_id是主键,而在另一个表中是外键
public void DeleteClass(int classId)
{
String query = "class_id = ?";
OpenDatabase();
database.delete(tblName_Class, query , new String[]{String.valueOf(classId)});
database.delete(tblName_Student, query , new String[]{String.valueOf(classId)});
database.delete(tblName_StudentPerformance , query , new String[]{String.valueOf(classId)});
close();
Toast.makeText(context, "deleted !", Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:2)
它可能取决于数据库的结构。如果使用ON DELETE CASCADE定义了外键,则只需要从Class表中删除它,它将自动从其他两个表中删除。
现在,如果你还没有定义ON CASCADE DELETE,那么首先要从具有外键的表(在你的情况下是Student和StudentPerformance)中删除,然后在具有主键的表中删除(Class )。