MySQL - klucz podstawowy

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
seseong
Posty: 3
Rejestracja: śr sty 16, 2008 10:01 am

MySQL - klucz podstawowy

Post autor: seseong »

Mam stworzona pole ID auto_increment klucz podstawowy, i stworzylem srypt kasujacy elmenty:
if (!$zapytanie=mysql_query("delete from upload where id = '$p_id'"))
{
echo ("nie skasowane");
};

i powstaje mi sytuacja ze elementy w tabeli przyjmuja taka numeracja 1 5 6 7 8 postaja dziury po usunieciu elementow. Czy istnieje mozliwosc by automatycznie po usunieciu owa 5 stala sie 2
kulmen
Nowy
Nowy
Posty: 64
Rejestracja: sob cze 23, 2007 3:24 am
Kontakt:

Re: MySQL - klucz podstawowy

Post autor: kulmen »

Na pewno nie istnieje w SQL definicja pola, które samo by reagowało w taki sposób (choć na pewno to Kopernik nie żyje, może jest coś o czym nie słyszałem bo nie znam całego SQL'a na pamięć, ale szczerze w to wątpie).

Na pewno da się poprzez dodanie zapytania bezpośrednio po usunięciu rekordu:

update upload id = id -1 WHERE id>'$p_id';

Przesunie Ci to wszystkie rekordy w dół o 1, które miały większe numery niż ten kasowany. Tyle, że takie rozwiązania są zbyteczne i niezwykle nieefektywne. Po co zamulać system?

Niezależnie czy masz dziury czy nie jeśli np: chcesz znaleźć kolejny rekord od powiedzmy pierwszego to wystarczy użyć zapytania:

select lista_pól from upload where id>1 limit 1
ODPOWIEDZ