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 ;