检查内容提供者条件的正确方法是什么?

What is the right way of checking conditions in content providers?

我有 sqlite 数据库和包装它的内容提供程序。有词典的table和单词的table。每个单词都属于一本词典。此外,每个词典都有恒定的容量。所以我的内容提供者应该只允许在每本词典中插入有限数量的单词。

"scheme"

Dictionaries
|-id (read-only)
|-capacity

Words
|-id (read-only)
|-dictionaryId (write-once)

我有几个选择:

1) 对于每个新词典,我可以创建触发器,如果​​收集的单词数量超过容量,则会引发 () 错误。但它会查询在某些情况下重复的每个插入。

2) 我可以在提供商的 insert() 中检查此条件。 (同上问题)

3) 我可以将此检查传递给提供商的用户。例如,检查 activity 中的条件,将新词添加到字典中。这是最优化的方法,因为我不需要每次添加新词时都进行查询。我可以在 activity 开头查询字典中的单词数量,然后递增它并在不查询的情况下了解相关值。但是这里我有另一个问题:如果我忘记检查这个条件或者犯了错误并且条件不工作怎么办。

那么在内容提供者中检查条件的正确方法是什么?

我决定从数据库中提取所有处理数据的逻辑,并像使用容器一样使用 db。原因是它使我免于对我认为并不容易的数据库进行测试。我认为最好是考虑数据库是健壮的,并基于它为应用程序组件创建测试。