Mam pytanie do thomsona... O co Ci chodzi w zdaniu "A jak się zachowa auto_increment jak będę zmieniał te wartości?". O to, że chciałbyś wartości tych pól ręcznie modyfikować? Jeśli tak to weź pod uwagę własności klucza. Modyfikować te wartości możesz jak najbardziej, ale pewne ograniczenie masz. Zazwyczaj autoincrement jest primary lub unique, wiec nie założysz klucza o id już istniejącym w bazie choćby. Z tego co kojarzę to wartość autoincrement jest przechowywana w bazie i wskazuje na liczbę większa o jeden od ostatnio wstawionego rekordu (wstawionego... nie zmodyfikowanego). Szczerze to nigdy nie sprawdzałem co się stanie jeśli przykładowo mamy 100 rekordów, a więc autoincrement ma 101, my przykładowo rekord o id=90 ustawimy na 105 i wstawimy kolejno 10 rekordów. Nie testowałem jak baza zachowa się przy owym 105. Czy go zignoruje i po 104 wstawi 106, czy może wywali błąd próbując wstawić coś na 105. Jeśli chciałbyś bez luk, to z tego co co już kiedyś nawet tutaj poruszano, musiałbyś zrobić własną funkcję modyfikująca te klucze i związane z nimi powiązania. A to może być dla bazy zabójcze.
Wookieb... Poza tym Twój przykład jest skuteczny tylko przy usuwaniu rekordu ostatniego i tylko dla niego ma sens. usunięcie id ze środka nie sprawi, że luka ta magicznie się sama załata. Choć sam indeks w tym miejscu jest pusty i dowolny wpis, który mógłby by jako autoincrement śmiało mógłby w tę lukę wskoczyć. Ale wymagało by to:
a) zapamiętanie autoincrement

wyszukanie luki
c) jeśli jest luka wrzucamy rekord pod jej id i ustawiamy autoincrement na zapamiętany (baza będzie chciała na pałę go zwiększyć przy insert)
d) jeśli nie ma luki to robimy zwykły insert bez modyfikacji autoincrement po nim.