我有两个表:航迹和航路点,一个航迹可以有多个航路点,但是航路点仅分配给1条航迹。
在点表的方式中,我有一个名为“ trackidfk”的列,一旦创建了轨道,该列就会插入track_ID,但是我没有在此列上设置外键约束。
删除轨道时,我想删除分配的航点,这可能吗?我读过有关使用触发器的信息,但我认为Android不支持它们。
要创建航点表:
public void onCreate(SQLiteDatabase db) { db.execSQL( "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + LONGITUDE + " INTEGER," + LATITUDE + " INTEGER," + TIME + " INTEGER," + TRACK_ID_FK + " INTEGER" + " );" ); ... }
支持带有on delete级联的外键约束,但是你需要启用它们。 我只是将以下内容添加到我的SQLOpenHelper中,这似乎可以解决问题。
@Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); if (!db.isReadOnly()) { // Enable foreign key constraints db.execSQL("PRAGMA foreign_keys=ON;"); } }
我声明了我的引用列如下。
mailbox_id INTEGER REFERENCES mailboxes ON DELETE CASCADE