0

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

1 回答 1

2

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

现在,如果您还没有定义 ON CASCADE DELETE,这样做的方法是首先从具有外键(在您的情况下为 Student 和 StudentPerformance)的表中删除,然后是具有主键(类)的表。

于 2018-03-29T15:02:06.170 回答