Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用SQLite触发器同步脏标志_Android_Sqlite_Triggers - Fatal编程技术网

Android 使用SQLite触发器同步脏标志

Android 使用SQLite触发器同步脏标志,android,sqlite,triggers,Android,Sqlite,Triggers,我正在尝试在两个表之间同步脏标志。一个表单可以有多个与之关联的答案。如果这些答案中有任何一个被标记为肮脏,我希望表单也被标记为肮脏。下面是我目前正在尝试的,似乎不起作用 db.execSQL("CREATE TRIGGER IF NOT EXISTS markFormDirtyIfAnswerDirty AFTER UPDATE ON Answer WHEN isDirty=true " + "BEGIN " + "UPDATE Form SET

我正在尝试在两个表之间同步脏标志。一个表单可以有多个与之关联的答案。如果这些答案中有任何一个被标记为肮脏,我希望表单也被标记为肮脏。下面是我目前正在尝试的,似乎不起作用

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

我找到了解决办法。事实证明,SQLite不支持true和false,相反,您必须使用1和0。我还需要在检查脏标志时使用新的引用。正确的响应如下所示

        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 ");

感谢您对错误消息保密。对不起。我把它加到原来的问题上