gpt4 book ai didi

java - Android中使用SQLite的外键约束?在删除级联

转载 作者:IT老高 更新时间:2023-10-28 11:34:20 26 4
gpt4 key购买 nike

我有两张表:tracks 和 waypoints,一个track 可以有很多waypoints,但是一个waypoint 只能分配给一个track。

在路点表中,我有一个名为“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 cascade的外键约束,但您需要启用它们。
我刚刚在我的 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

关于java - Android中使用SQLite的外键约束?在删除级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2545558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com