Vous avez raison de dire que le problème apparaît car SQLite vérifie les contraintes après chaque mise à jour de ligne et non à la fin de l'instruction ou à la fin de la transaction.
Je vois cette solution de contournement au problème (de SQLite n'ayant pas implémenté UPDATE
correctement). En supposant que la priority
la colonne n'a pas de valeurs négatives, nous pouvons les utiliser (valeurs négatives) comme temporaires pour éviter le UNIQUE
erreurs de contrainte :
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;