Actualización condicional en SQLite

¿Puedo crear en SQLite una statement como esta?

 update books set (if number_of_pages > 0 then number_of_pages = number_of_pages - 1) where book_id = 10 

¿Hay una syntax funcional para esto?

Una sentencia CASE debería funcionar con la siguiente syntax:

 UPDATE books SET number_of_page = CASE WHEN number_of_pages > 0 THEN (number_of_pages - 1) ELSE 0 END WHERE whatever_condition 

¿No es eso igual a esta statement?

 update books set number_of_pages = number_of_pages - 1 where number_of_pages>0 

Editar:

según una nueva statement:

 update books set number_of_pages = number_of_pages - 1 where number_of_pages>0 and book_id = 10 

Si solo desea actualizar condicionalmente algunas filas y dejar otras intactas, esto debería hacer:

 update books set number_of_pages = number_of_pages - 1 where number_of_pages > 0 AND book_id = 10 

Si desea actualizar todas las filas (con book_id = 10 ) a diferentes valores, puede usar 2 instrucciones con condiciones "opuestas". Suponiendo que 0 es el "otro" valor, se vería así:

 update books set number_of_pages = number_of_pages - 1 where number_of_pages > 0 AND book_id = 10 update books set number_of_pages = 0 where number_of_pages <= 0 AND book_id = 10 

O simplemente use CASE como otros han sugerido.