Android sqlite greendao和sqlite触发器

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

我试图使用下面的代码来确保数据库中的引用完整性,但似乎无法使用GreenDao。我仍然可以删除所有记录。另一方面,当我尝试在SQLItemManager中删除时,会触发触发器,删除操作失败

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没有为此抱怨。