Je hebt gelijk dat het probleem zich voordoet omdat SQLite de beperkingen controleert na elke rij-update en niet aan het einde van de instructie of het einde van de transactie.
Ik zie deze tijdelijke oplossing voor het probleem (van SQLite die UPDATE niet heeft geïmplementeerd) correct). Ervan uitgaande dat de priority kolom heeft geen negatieve waarden, we kunnen ze (negatieve waarden) als tijdelijk gebruiken om de UNIQUE te vermijden beperkingsfouten:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;