Du har ret i, at problemet opstår, fordi SQLite kontrollerer begrænsningerne efter hver rækkeopdatering og ikke ved slutningen af sætningen eller slutningen af transaktionen.
Jeg ser denne løsning på problemet (med at SQLite ikke har implementeret UPDATE
korrekt). Forudsat at priority
kolonnen ikke har nogen negative værdier, vi kan bruge dem (negative værdier) som midlertidige for at undgå UNIQUE
begrænsningsfejl:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;