Android sqlite greendao和sqlite触发器
我试图使用下面的代码来确保数据库中的引用完整性,但似乎无法使用GreenDao。我仍然可以删除所有记录。另一方面,当我尝试在SQLItemManager中删除时,会触发触发器,删除操作失败Android sqlite greendao和sqlite触发器,android-sqlite,greendao,Android Sqlite,Greendao,我试图使用下面的代码来确保数据库中的引用完整性,但似乎无法使用GreenDao。我仍然可以删除所有记录。另一方面,当我尝试在SQLItemManager中删除时,会触发触发器,删除操作失败 DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, Common.DBNAME, null) { @Override public void onCreate(SQLiteDatabase db) { super.onC
DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, Common.DBNAME, null)
{
@Override
public void onCreate(SQLiteDatabase db) {
super.onCreate(db);
db.execSQL("CREATE TRIGGER grupe_artikli BEFORE DELETE ON groups "+
"FOR EACH ROW BEGIN "+
"SELECT CASE " +
"WHEN ((SELECT id_group FROM products WHERE id_group = OLD._id) IS NOT NULL) "+
"THEN RAISE(ABORT, 'error') "+
"END; END;");
DaoSession session = new DaoMaster(db).newSession();
}
GreenDao是否支持触发器,或者是否有其他方法来维护数据库引用完整性?GreenDao没有内置的触发器支持。然而,我想不出你的方法不起作用的任何理由。greenDAO不会劫持数据库或其他东西,因此您应该能够直接使用数据库,就像您根本不会使用greenDAO一样。它可以工作!这是我愚蠢的错误——我实际上并没有从数据库中删除,只是设置了一个内部的“删除”标志。当然,SQLite没有为此抱怨。