SQLite
 sql >> Database >  >> RDS >> SQLite

Simula ORDER BY in SQLite UPDATE per gestire il vincolo di unicità

Hai ragione sul fatto che il problema si presenta perché SQLite controlla i vincoli dopo ogni aggiornamento di riga e non alla fine dell'istruzione o alla fine della transazione.

Vedo questa soluzione al problema (di SQLite che non ha implementato UPDATE correttamente). Supponendo che la priority la colonna non ha valori negativi, possiamo usarli (valori negativi) come temporanei per evitare il UNIQUE errori di vincolo:

UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;

UPDATE table1 SET priority = - priority WHERE priority < 0 ;