sql >> Base de Datos >  >> RDS >> SQLite

Simule ORDER BY en SQLite UPDATE para manejar la restricción de unicidad

Tiene razón en que el problema aparece porque SQLite verifica las restricciones después de cada actualización de fila y no al final de la declaración o al final de la transacción.

Veo esta solución al problema (de que SQLite no haya implementado UPDATE correctamente). Suponiendo que la priority columna no tiene valores negativos, podemos usarlos (valores negativos) como temporales para evitar el UNIQUE errores de restricción:

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

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