Anda benar bahwa masalah muncul karena SQLite memeriksa batasan setelah setiap pembaruan baris dan bukan di akhir pernyataan atau akhir transaksi.
Saya melihat solusi untuk masalah ini (dari SQLite tidak mengimplementasikan UPDATE
benar). Dengan asumsi bahwa priority
kolom tidak memiliki nilai negatif, kita dapat menggunakannya (nilai negatif) sebagai sementara untuk menghindari UNIQUE
kesalahan kendala:
UPDATE table1 SET priority = - (priority + 1) WHERE priority > 1 ;
UPDATE table1 SET priority = - priority WHERE priority < 0 ;