我有两张桌子专辑和歌曲,每首歌都提到了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:约束失败.