Kada već postoji varijanta za multiple-table update, možda bi jednim querijem mogla da se odradi kompletna selidba sloga na novu poziciju. Id sloga je $id, a novi prethodni $newprevious:
Code:
UPDATE tabela t1, tabela t2, tabela t3
SET t1.previous = t2.previous,
t2.previous = t3.previous,
t3.previous = t2.id
WHERE t1.previous = t2.id
AND t2.id = '$id'
AND t3.previous = '$newprevious'
Ovde ostaje otvoreno nekoliko pitanja.
Ukoliko tabela sadrži prostu listu (listu koja ima početak i kraj, početni slog koji nema svog prethodnika i poslednji koji ne prethodi nekom drugom), šta se dešava u graničnim slučajevima - ako su $id ili $newprevious adrese poslednjeg sloga liste:
- Propada li pokušaj premeštanja sloga?
- Ako propada, postoji li neki drugi način spajanja tabela ili dodela vrednosti koji obezbeđuje uspeh i u ovim slučajevima?
Ove dileme moguće je izbeći formiranjem kružne liste, ali se u tom slučaju na nekom drugom mestu mora čuvati informacija o vodećem elementu liste.