插入重复主键的SQLiteConstraintException错误消息

时间:2017-07-20 14:58:17

标签: android sqlite

try {
    db.insertOrThrow("savedreports", null, cv);
} catch (SQLException e) {
   Log.e(TAG, e.getMessage(), e);
}

如果执行上面的代码试图插入重复记录(同样的主键和字段值),异常会给出什么错误消息?

“PRIMARY KEY必须是唯一的” 要么 “UNIQUE约束失败” 要么 ???

我的程序将从服务器获取一些记录,然后通知服务器删除这些记录。但是,有时删除记录的http请求由于连接错误而失败,因此当我重新请求最新记录时,我会得到相同的记录。

我目前使用insertOrThrow插入这些记录,因此当出现重复记录时,我想确切地知道它引发的异常正是由于重复记录(而不是由于空列约束,数据库连接关闭等)。

1 个答案:

答案 0 :(得分:0)

这些约束旨在检测编程错误,而不是运行时错误。因此,没有保证的错误消息。

如果要检查密钥是否重复,则必须自行检查。 但如果这是唯一可能失败的约束,则可以改为INSERT或IGNORE(在Android中为insertWithOnConflict())。