删除多表记录的最佳方法是什么?

时间:2018-03-29 14:54:39

标签: android sqlite android-sqlite android-database android-query

我有一个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();
}

1 个答案:

答案 0 :(得分:2)

它可能取决于数据库的结构。如果使用ON DELETE CASCADE定义了外键,则只需要从Class表中删除它,它将自动从其他两个表中删除。

现在,如果你还没有定义ON CASCADE DELETE,那么首先要从具有外键的表(在你的情况下是Student和StudentPerformance)中删除,然后在具有主键的表中删除(Class )。