我正在尝试级联删除,这样当我从 myFooTable
中删除一条记录时,myFooBarLinkTable
和 myBarTable
中的所有关联记录都将被删除以及。下面是我当前 DB 模式尝试的简化版本。当我从 myFooTable
中删除一条记录时,myFooBarTable
中的相关记录也被删除;但 myBarTable
中的记录仍然存在。
public class MyDatabaseManager extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE myFooTable (fooID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"fooText1 TEXT," +
"fooText2 TEXT " +
");");
db.execSQL("CREATE TABLE myBarTable (barID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"barText1 TEXT, " +
"barText2 TEXT);" );
db.execSQL("CREATE TABLE myFooBarLinkTable (fooBarLinkID INTEGER PRIMARY KEY AUTOINCREMENT, " +
"fooLinkID REFERENCES myFooTable(fooID) ON DELETE CASCADE, " +
"barLinkID REFERENCES myBarTable(barID) ON DELETE CASCADE);" );
最佳答案
关于删除级联
works only one way ; myFooBarLinkTable
表定义中的这些子句仅在 referenced 表中的记录被删除时触发,即在 myFooTable
或 myBarTable 中
。
如果您希望删除以其他方式发生,您必须编写自己的触发器,或者从您的应用中执行单独的 DELETE
命令。
关于android - 在android/sqlite中跨多个表进行级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14440721/