Условный запрос всегда устанавливает значение false в базе данных комнаты - PullRequest
0 голосов
/ 03 марта 2020

У меня есть локальная база данных, которая содержит описания рецептов.

В приложении пользователь может добавить рецепт в закладки, я хотел бы обновить соответствующее значение в базе данных, которое, по моему мнению, должно быть условным запросом. (например, если пользователь сначала щелкает по избранному значку, значение должно быть установлено в 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, и я не понимаю почему, оно никогда не устанавливает ценить до истины. Я не знаю, была ли проблема с моим запросом. Если бы кто-то мог поднять мне настроение по этому вопросу. Спасибо

1 Ответ

2 голосов
/ 03 марта 2020

Просто установите ваш любимый на противоположное от текущего значения. Так что используйте NOT

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

Это установит для избранного значение true, если оно ложно, и наоборот.

...