Bagaimana kalau hanya menggunakan integer
kolom yang mendefinisikan urutan? Secara default Anda menetapkan angka * 1000, seperti 1000, 2000, 3000.... dan jika Anda memindahkan 3000 antara 1000 dan 2000, Anda mengubahnya menjadi 1500. Jadi dalam kebanyakan kasus, Anda tidak perlu memperbarui nomor lainnya sama sekali. Saya menggunakan pendekatan ini dan itu bekerja dengan baik. Anda juga dapat menggunakan double
tetapi kemudian Anda tidak memiliki kontrol tentang kesalahan presisi dan pembulatan, jadi sebaiknya jangan menggunakannya.
Jadi algoritme akan terlihat seperti :katakan Anda memindahkan B ke posisi setelah A. Pertama lakukan pilih untuk melihat urutan catatan di sebelah A. Jika setidaknya +2 lebih tinggi dari urutan A maka Anda cukup mengatur urutan B agar sesuai di antaranya. Tetapi jika hanya +1 lebih tinggi (tidak ada spasi setelah A), Anda memilih catatan yang berbatasan dengan B untuk melihat berapa banyak ruang di sisi ini, bagi dengan 2 lalu tambahkan nilai ini ke urutan semua catatan antara A dan B. Itu dia!
(Perhatikan bahwa Anda harus menggunakan transaksi/penguncian untuk algoritme apa pun yang berisi lebih dari satu kueri, jadi ini juga berlaku untuk kasus ini. Cara termudah adalah menggunakan transaksi InnoDB.)