Máte pravdu, že se problém objevuje, protože SQLite kontroluje omezení po každé aktualizaci řádku a ne na konci příkazu nebo na konci transakce.
Vidím toto řešení problému (to, že SQLite nemá implementováno UPDATE správně). Za předpokladu, že priority sloupec neobsahuje žádné záporné hodnoty, můžeme je použít (záporné hodnoty) jako dočasné, abychom se vyhnuli UNIQUE chyby omezení:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;