当我删除一个聊天行时,我想删除所有消息行以及使用该id_chat
创建的所有关系行。我在这一点上添加寄存器没有问题,但删除了关系和消息寄存器,因为它们不会自动消失。级联删除,错误FOREIGN KEY约束失败,sqlite
public void onOpen(SQLiteDatabase db){
super.onOpen(db);
db.execSQL("PRAGMA foreign_keys = ON");
}
编辑: 现在加入中关系的第一个寄存器(1.17)
public class DatabaseHelper extends SQLiteOpenHelper {
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE Chats (_id INTEGER PRIMARY KEY AUTOINCREMENT, A1 DATE)");
db.execSQL("CREATE TABLE Messages (_id INTEGER PRIMARY KEY AUTOINCREMENT, FOREIGN KEY(id_user) REFERENCES Users(id_user), FOREIGN KEY(id_chat) REFERENCES Chats(_id) ON DELETE CASCADE)");
db.execSQL("CREATE TABLE Relations (id_viaje INTEGER, id_chat INTEGER, PRIMARY KEY (id_chat, id_viaje), FOREIGN KEY (id_chat) REFERENCES Chats(_id) ON DELETE CASCADE, FOREIGN KEY (id_viaje) REFERENCES Viajes(_id))");
db.execSQL("CREATE TABLE Users (_id INTEGER AUTO_INCREMENT, id_user TEXT PRIMARY KEY, name TEXT)");
db.execSQL("CREATE TABLE Viajes (_id INTEGER PRIMARY KEY AUTOINCREMENT, date DATE, activate BOOLEAN, id_user TEXT not null)");
}
}
因此,正如我在读计算器我为了激活外键推翻方法onOpen
第二个(3,17)给我在本地分贝错误:
Error inserting id_viaje=3 id_chat=17 android.database.sqlite.SQLiteConstraintException: FOREIGN KEY constraint failed
为什么这个错误?如何在级联上删除? 感谢
你是对的,我编辑它。谢谢。在Relations中创建寄存器仍然存在一些问题,我创建它的每个聊天应该至少创建两个关系寄存器,我只能插入第一个。 – lulu666