SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Simular ORDER BY no SQLite UPDATE para lidar com a restrição de exclusividade


Você está certo de que o problema aparece porque o SQLite verifica as restrições após cada atualização de linha e não no final da instrução ou no final da transação.

Eu vejo esta solução para o problema (do SQLite não ter implementado UPDATE corretamente). Supondo que a priority coluna não tem nenhum valor negativo, podemos usá-los (valores negativos) como temporários para evitar o UNIQUE erros de restrição:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;

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