2013-02-17 102 views
0

我試圖使用下面的代碼來確保數據庫中的參照完整性,但似乎沒有與GreenDao一起使用。我仍然可以刪除所有記錄。另一方面,當我嘗試在Sqlitemanager中刪除時,觸發器被觸發並且刪除操作失敗。greendao和sqlite觸發器

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支持觸發器,還是有其他方法來維護數據庫參照完整性?

回答

2

greenDAO沒有內置觸發器支持。不過,我想不出爲什麼你的方法不適用。 greenDAO不會劫持數據庫或其他東西,所以你應該能夠直接使用數據庫,就像你根本不會使用greenDAO一樣。

+0

它的工作原理!這是我愚蠢的錯誤 - 我實際上並沒有從數據庫中刪除,只是設置了一個內部的「刪除」標誌。當然,SQLite沒有爲此抱怨。 – Goran 2013-02-23 18:15:42