删除多表记录的最佳方法是什么?
What is the best way to delete a record of multi tables?
我有一个包含三个 table 的 database
,并且在所有三个 table 中都有一个 class_id 列。我想在删除 class_id 时,删除 table 中具有 class_id
的所有记录
我用了一种方法,但我不确定这种方法是否标准?
提示:class_id 在 table 中是主键,在另一个 table 中是外键
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();
}
这取决于您的数据库结构。如果你用 ON DELETE CASCADE 定义了外键,你只需要从 Class table 中删除,它会自动从其他两个中删除。
现在,如果您还没有定义 ON CASCADE DELETE,方法是先从具有外键的 table 中删除(在您的例子中是 Student 和 StudentPerformance),然后是一个带有主键 (Class).
我有一个包含三个 table 的 database
,并且在所有三个 table 中都有一个 class_id 列。我想在删除 class_id 时,删除 table 中具有 class_id
我用了一种方法,但我不确定这种方法是否标准?
提示:class_id 在 table 中是主键,在另一个 table 中是外键
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();
}
这取决于您的数据库结构。如果你用 ON DELETE CASCADE 定义了外键,你只需要从 Class table 中删除,它会自动从其他两个中删除。
现在,如果您还没有定义 ON CASCADE DELETE,方法是先从具有外键的 table 中删除(在您的例子中是 Student 和 StudentPerformance),然后是一个带有主键 (Class).