Máte pravdu, že se problém objevuje, protože SQLite kontroluje omezení po každé aktualizaci řádku a ne na konci příkazu nebo na konci transakce.
Vidím toto řešení problému (to, že SQLite nemá implementováno UPDATE
správně). Za předpokladu, že priority
sloupec neobsahuje žádné záporné hodnoty, můžeme je použít (záporné hodnoty) jako dočasné, abychom se vyhnuli UNIQUE
chyby omezení:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;