我有一个本地数据库,其中包含对重复的描述。
在应用程序中,用户可以将背诵作为书签,我想更新数据库中的相应值,在我看来,这应该是一个条件查询(例如,如果用户第一次单击收藏夹图标,则该值必须设置为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,反之亦然。