android – sqlite约束失败错误代码

我有两张桌子专辑和歌曲,每首歌都提到了alum的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和jsut抛出的正确RAISE异常: android.database.sqlite.sqliteConstraintException:错误代码19:约束失败.

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能