Masz rację, że problem pojawia się, ponieważ SQLite sprawdza ograniczenia po każdej aktualizacji wiersza, a nie na końcu instrukcji lub transakcji.
Widzę to obejście problemu (z SQLite nie zaimplementowanym UPDATE prawidłowo). Zakładając, że priority kolumna nie ma żadnych wartości ujemnych, możemy ich użyć (wartości ujemne) jako tymczasowe, aby uniknąć UNIQUE błędy ograniczeń:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;