L'id è gestito dal database. Se ti posso dare un consiglio, non provare soprattutto se la tua tabella è legata ad un'altra a livello di id. Dovresti svolgere lo stesso lavoro per le tabelle collegate.
Di più, un id auto_increment ha come unico scopo di dare un identificativo che serve solo a livello informatico (ad esempio un "id" potrebbe essere un codice cliente che assegni tu e in questo caso l'id ha un valore funzionale).

In fine se vuoi assolutamente colmare i buchi, puoi sempre crearti un campo "pseudo id" che gestisci manualmente.

Esempio

id=1 pseudo=1
id=2 pseudo=2
id=3 pseudo=3
id=4 pseudo=4
id=5 pseudo=5
id=6 pseudo=6

Cancello id=4

id=1 pseudo=1
id=2 pseudo=2
id=3 pseudo=3
id=5 pseudo=4
id=6 pseudo=5