2016-09-27 27 views
-1

我想同步兩個表之間的髒標誌。表單可以有幾個與之相關的答案。如果這些答案中的任何一個都被標記爲髒,我希望表格也被標記爲髒。下面是我目前正在嘗試,似乎沒有工作。使用SQLite觸發器同步髒標誌

db.execSQL("CREATE TRIGGER IF NOT EXISTS markFormDirtyIfAnswerDirty AFTER UPDATE ON Answer WHEN isDirty=true " + 
      "BEGIN " + 
      "UPDATE Form SET dirty=true WHERE _id=OLD.formId; " + 
      "END "); 

以下是錯誤我得到:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp.myappmobile.test/com.myapp.myappmobile.activities.DashboardActivity_}: java.lang.IllegalStateException: getDatabase called recursively 
                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339) 
                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2413) 
                       at android.app.ActivityThread.access$800(ActivityThread.java:155) 
                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1317) 
                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5343) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700) 
                      Caused by: java.lang.IllegalStateException: getDatabase called recursively 
+0

謝謝你保持錯誤信息的祕密。 –

+0

抱歉。我將它添加到原始問題中 –

回答

0

我找到了解決辦法。結果SQLite不支持true和false,而不得不使用1和0.另外我需要在檢查髒標誌時使用NEW引用。正確的答案如下所示。

 db.execSQL("CREATE TRIGGER IF NOT EXISTS markFormDirtyIfAnswerDirty AFTER UPDATE ON Answer WHEN NEW.isDirty=1 " + 
      "BEGIN " + 
      "UPDATE Form SET dirty=1 WHERE _id=OLD.formId; " + 
      "END ");