/ / MySQL: Auto increment minus jeden? - mysql, auto-inkrementacja

MySQL: Auto increment minus jeden? - mysql, auto-inkrementacja

Mam kod, który usunie wpis z bazy danych:

mysql_query("DELETE FROM `posts` WHERE ID = "$id"");

Teraz chcę ustawić automatyczne zwiększenie o jeden minus, aby nadążyć za usuniętym wpisem. czy to możliwe? Jeśli tak, jak mogę to zrobić? Dzięki!

Odpowiedzi:

2 dla odpowiedzi № 1

Naprawdę nie chcesz tego robić.

Wyobraź sobie następujące zdarzenia:

Nowy post został złożony z identyfikatorem 100 Nowy wpis został złożony z identyfikatorem 101 Nowy wpis został złożony z identyfikatorem 102 Post 100 został usunięty ... Twój licznik postu ma teraz 101 Nowy wpis został złożony z identyfikatorem 101

Więc teraz masz dwa identyfikatory z 101? Jeśli twoje ograniczenia cię dopuściły, to jest złe. Jeśli ci nie pozwolą, to jest niemożliwe.

Tak czy inaczej, najlepiej jest pozwolić, by "id 101" umarł na zawsze, nie będzie go brakowało, jest kilka miliardów więcej numerów do wyboru ...


5 dla odpowiedzi nr 2

Możesz ręcznie ustawić AUTO_INCREMENT value (http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html), ale to zły pomysł.

Najpierw powiedz, że jest 5 postów. Jeśli wpis o ID 3 zostanie usunięty, nie można automatycznie ustawić auto-inkrementacji na 3, ponieważ identyfikatory 4 i 5 są nadal używane.

Po drugie, jeśli istnieją odniesienia do tego identyfikatora w innej tabeli, która nie została usunięta, wówczas te odniesienia będą nieprawidłowe, gdy identyfikator zostanie ponownie użyty.

Ogólnie wartości auto-inkrementacji mają być używane tylko raz. Możesz ominąć to, jeśli chcesz, ale naprawdę nie ma powodu.


1 dla odpowiedzi nr 3

zmień tabelę yourtable auto_increment = 5

Być może można użyć podzapytania, aby uzyskać liczbę:

alter table yourtable auto_increment = (wybierz liczbę (*) z tabeli) + 1

Czy na pewno chcesz to zrobić? Pamiętaj, że to się zepsuje, jeśli usuniesz wiersz "W środku", a nie ostatni.