una chiave primaria contraddistingue un record e non il contenuto del record. E' una manovra fuori dalla logica di essere di un database spostare delle chiavi primarie. Molto meglio se aggiungi una colonna di ordinamento dei record ed agisci su quella.

Comunque sia, i record nella tabella del db non sono mai in ordine fisico assoluto ma per definizione sono posizionati in modo random nel file che li contiene. Il primo buco che trova viene occupato dal record ultimo inserito. Ad ogni modo cosa fai son fatti tuoi.

Se vuoi trovare "per certo" il valore dell'id precedente di un tuo id indicato la via e' la seguente:

codice:
select id from tabella
where id <  '$tuo_id'
order by id desc
limit 1
ottieni esattamente il valore dell'id precedente a prescindere da buchi vuoti formatisi con il gioco delle tre carte....

non spostare mai sull'id 0 che e' mal digerito da una chiave primaria. Usa un numero alto, fuori dal possibile range utilizzato.