0

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

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 是否支持触发器,或者是否有其他方法来维护数据库引用完整性?

4

1 回答 1

2

greenDAO 没有内置的触发器支持。但是,我想不出您的方法不起作用的任何原因。greenDAO 不会劫持数据库或其他东西,因此您应该能够直接使用数据库,就像您根本不会使用 greenDAO 一样。

于 2013-02-21T17:34:13.000 回答