实际上,我想我已经找到了答案。如果我在插入行时尝试破坏约束,SQLite将失败。 ORM会在同一场景中忽略查询。我对此信息是否正确?
我不明白他们为什么表现得如此不同。另外,我没有在Room documentation的任何地方找到它。文档告诉我,我可以通过自己的冲突解决策略,但无处指定默认策略。特别是当它与SQLite dbms策略不同时。谁能帮助我更好地理解这一点?
好的,现在我知道Room的插入查询的冲突策略是 ABORT 。以下是docs的链接。此外,Sqlite默认为 ABORT 。但是,在Room中, Abort 表示查询返回一个long值,就像常规插入查询一样。在Sqlite 中止意味着它将显示约束错误。仍然对此感到困惑。
答案 0 :(得分:0)
正如@Luksprog在评论中指出的那样。策略默认为Room和SQLite DB中的ABORT。当我们破坏任何约束时,两者都会抛出错误。然而,我使用了替换策略(我关注了一些博客或代码框)并且没有注意到它。我的结局只是一个愚蠢的错误。