Нет, не шутка, к сожалению. Как частный случай Ваше решение допустимо. Но в общем случае оно неправильное и работать не будет, например в случае наличия у.ключа по полю pos (а он должен быть!).
Правильным решением будет примерно такое:
UPDATE ttt set pos = pow(2, 31)-1 WHERE pos = 5;
UPDATE ttt set pos = pos + 1 WHERE id BETWEEN 2 AND 4 ORDER BY pos DESC;
UPDATE ttt set pos = 2 WHERE pos = pow(2, 31)-1;
Ну, что ж, [censored] - так [censored]:
1. pow(2, 31)-1 --- нет никакой гарантии, что такого числа в таблице ещё нет.
2. ORDER BY pos DESC; сортировка не нужна, только ухудшит план (тут я неправ)
3. `UPDATE ttt set pos = 2 WHERE pos = pow(2, 31)-1;` - ты забыл сказать о транзакциях, без них твоё решение точно так же недопустимо. Назвался дартаньяном - будь добр предусмотреть всё.
4. Ну и напоследок:
"Но в общем случае оно неправильное и работать не будет, например в случае наличия у.ключа по полю pos" --- ты уверен, что оно не будет работать? Запрос как бы один

Даю подсказку: констрейнты проверяются
после запроса (а не вовремя) Но вместо того, чтобы почитать и (не может быть)
подумать тебе интереснее попытаться [censored]

(тут я неправ)
Вот такое вот оно у тебя, "правильное" решение... Настолько правильное, что, назвавшись решением для "общего" случая, не гарантирует даже работоспособности в поставленных ТОБОЙ ЖЕ условиях, эх.