il fatto è che spostare equivale a perdere le relazioni.
Se gli id di tabella 1 sono correlati con tabella 2 per, appunto, gli id, spostare un record significherebbe ritrovarsi assegnati in tabella 2 gli id dell'altro che ne ha preso il posto.
Quando si prevede lo spostamento bisogna prevedere la modifica di tutte le relazioni.
Una soluzione molto sporca potrebbe essere sapendo l'id, che se va diminuito di 1 ...
SELECT MAX(id) FROM tabella WHERE id < $idDaSpostare
mentre se se lo spostamento è su ...
SELECT MIN(id) FROM tabella WHERE id > $idDaSpostare
a quel punto col $risultato si può spostare temporaneamente il record da sostituire, aggiornare l'id del modificato, aggiornare lo spostato con l'id del modificato
inentrambi i casi va gestito il risultato nullo, possibilissimo se il record è il primo della serie o l'ultimo, e li si deve anche poter spostare tutto per id (si lavora di array) oppure si nega la possibilità ...
è una soluzione orribile (anche perchè manca la parte degli aggiornamenti delle relazioni in tabella 2) ma la prima fast & dirty che mi viene in mente![]()