Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę zsumować wartość w bazie danych pokoju android?

Spróbuj dodać następną metodę w swoim dao:

@Query("UPDATE sum SET value = value + :addValue WHERE id =:id")
suspend fun updateSum(id: Int, addValue: Long)

Następnie możesz go wywołać ze swojego ViewModel/Activity

AKTUALIZUJ

Dla pojedynczej metody aktualizacji/wstawiaj te metody w dao:

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertSum(model: Sum)

@Query("UPDATE sum SET value = value + :value WHERE id = :id")
suspend fun updateSum(id: Int, value: Long)

@Query("SELECT * FROM sum WHERE id = :id")
suspend fun getSumById(id: Int): Sum?

@Transaction
suspend fun updateOrInsertSum(sum: Sum) { // <-- this method updates value or insert new item, if id is not found
    getSumById(sum.id)?.let { updateSum(sum.id, sum.value) } ?: insertSum(sum)
}

Oczywiście należy dodać metodę updateOrInsertSum do twojego repozytorium i viewmodeluWtedy jeśli wywołasz id ='1' po raz pierwszy wartość zostanie wstawiona:

viewmodel.updateOrInsertSum(Sum(1 ,10000)) // <-- id = 1, value = 10000

Przy następnym wywołaniu element zostanie zaktualizowany tą samą metodą:

viewmodel.updateOrInsertSum(Sum(1 ,20000)) // <-- id = 1, value = 10000+2000 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Martwa blokada MySQL InnoDB na SELECT z blokadą na wyłączność (DO AKTUALIZACJI)

  2. Mysql Load Inline - określone kolumny

  3. Wyodrębnij dane z json w polu mysql

  4. Mysqli nie pozwala na wiele zapytań?

  5. Jak utworzyć użytkownika w MySQL