当前位置:首页 > 数据库 > SQlite

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:约束失败.


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!