android - sqlite约束失败错误代码

标签 android sqlite constraints

我有两个表专辑和歌曲,每首歌曲都引用了校友的 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/

相关文章:

android - 从按钮中的文本中删除下划线 (Android)

c# - 将 sqlite 用于 Windows Phone 8 应用程序

c++ - 我应该制作所有不应该改变常量的东西吗?

java - hibernate 。如何为字段组合添加唯一索引?

ios - 更改表格 View 中的按钮约束

android - Google Pay(Tez) 集成到我的支付网关中吗? (安卓)

android - 在 dismissDialog 之后将焦点设置到 EditText

java - 为什么我不能在 ormlite 中使用自定义 DAO 类?

android - 顶部 LinearLayout 在底部 LinearLayout 之前占用最大空间

ios - FMDB更新版本号不起作用