我有两个表专辑和歌曲,每首歌曲都引用了校友的 ID。
专辑列表:
CREATE TABLE albums
(id INTEGER PRIMARY KEY ASC,
name TEXT,
additional TEXT)
歌表:
CREATE TABLE songs
(id INTEGER PRIMARY KEY ASC,
album_fk INTEGER NOT NULL,
title TEXT,
url TEXT,
duration BIGINT NOT NULL)
我还有一个触发器来检查我删除专辑时是否有现有歌曲:
CREATE TRIGGER trigger_on_delete
BEFORE DELETE ON albums
FOR EACH ROW BEGIN
SELECT RAISE(FAIL,'album has songs cannot be deleted')
WHERE (SELECT album_fk FROM songs WHERE album_fk = OLD.id) IS NOT
NULL;)
END
一切正常,但有时
Exception: android.database.sqlite.SQLiteConstraintException: error
code 19: constraint failed
Stack Trace :
android.database.sqlite.SQLiteStatement.native_execute(Native Method)
android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:
66)
当我尝试删除相册时抛出。我的删除方法只是通过 id 删除相册。不好的是我无法复制它,所以我无法提供太多信息。 我尝试了删除相册的不同方案,但我从未遇到过此异常。
所以任何想法都可以调查这个问题。专辑表中没有任何限制,那么什么会导致这种异常?任何帮助将不胜感激。
最佳答案
这太不公平了。如果您在 PC 上运行此代码,一切正常,如果您尝试删除包含歌曲的专辑,异常会显示:无法删除专辑中的歌曲”,但似乎 android 人员无法处理来自 sqlite 的正确 RAISE,并且会抛出异常: android.database.sqlite.SQLiteConstraintException:错误代码 19:约束失败。
关于android - sqlite约束失败错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3371307/