条件查询总是将房间数据库中的数据设置为false



我有一个本地数据库,其中包含对重复的描述。

在应用程序中,用户可以将背诵作为书签,我想更新数据库中的相应值,在我看来,这应该是一个条件查询(例如,如果用户第一次单击收藏夹图标,则该值必须设置为true,如果他再次单击,则数据库中的该值必须设为false(。

我做了一些研究,最后我提出了这样的问题:

@Query("UPDATE recipee SET favorite = CASE WHEN favorite = 0 THEN favorite = 1 ELSE favorite = 0 END WHERE name = :name")
void updateFavorite(String name);

问题是这个值总是设置为false,我不明白为什么,它从来没有设置为true。我不知道我的查询是否有问题。如果有人能在这件事上启发我的话。谢谢

只需将您的收藏夹设置为与当前值相反的值。所以使用NOT

@Query("UPDATE recipee SET favorite = NOT favorite WHERE name = :name")
void updateFavorite(String name);

如果是false,则会将"收藏夹"设置为true,反之亦然。

最新更新