SQLite
 sql >> Base de données >  >> RDS >> SQLite

Simuler ORDER BY dans SQLite UPDATE pour gérer la contrainte d'unicité

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 ;