Ответ 1
Для общего SQL вы можете использовать CASE
:
CASE используется для представления логики if-then-else для SQL. Его синтаксис:
SELECT CASE ("column_name") WHEN "condition1" THEN "result1" WHEN "condition2" THEN "result2" ... [ELSE "resultN"] END FROM "table_name"
Из http://www.sqlite.org/lang_expr.html раздела "Выражение CASE"
например.
UPDATE pages
SET rkey = rkey + 2,
lkey = CASE WHEN lkey >= $key THEN lkey + 2 ELSE lkey END
WHERE rkey >= $key
Еще одна ссылка о SQLite и CASE (пример обновления с подзапросом) http://sqlite.awardspace.info/syntax/sqlitepg09.htm
CASE может использоваться в UPDATE в общем SQL, но у меня нет информации о поддержке SQLite UPDATE с CASE
http://www.craigsmullins.com/ssu_0899.htm раздел "Использование выражений CASE при изменении данных"