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 に答える