[MySQL] Usuwanie rekordów z auto increment

0

Witam.
Mam taką tabele w której jedna z wartości przyjmuje wartość auto increment (jest to plik_id).
Po usunięciu rekordu z bazy danych z dajmy na to z plik_id=3 rekord poprawnie znika. jeśli jednak dodaje potem nowy rekord to nie dostaje on plik_id=3 tylko 4.

Jak usuwać rekordy by problem się nie pojawiał ?
Jak poprawić tabelę by wszystkie wartości plik_id przyjęły odpowiednie wartości (odpowiadające ilości i kolejności rekordów) ?

0
DELETE FROM tabelka WHERE plik_id = 3;  ALTER TABLE tabelka  AUTO_INCREMENT = 3; 

To troche głupie. Ale czekam na inne odpowiedzi

0

autoinc nie służy do takich rzeczy.
Podaj chociaż jeden powód za tym co chcesz zrobić

0
Misiekd napisał(a)

autoinc nie służy do takich rzeczy.
Podaj chociaż jeden powód za tym co chcesz zrobić

Chcę by każdy plik miał unikalne ID bo robię jeszcze komentarze. W tablicy komentarze mam po prostu np id_pliku=1 i wiem do którego pliku się on odnosi (tutaj pliku o ID=1).

0

auto_increment gwarantuje unikalnosc. Po co Ci jeszcze 'brak dziur' w numerowaniu?

0
sebastian-89 napisał(a)

Chcę by każdy plik miał unikalne ID bo robię jeszcze komentarze. W tablicy komentarze mam po prostu np id_pliku=1 i wiem do którego pliku się on odnosi (tutaj pliku o ID=1).
a co to ma wspólnego z Twpim pierwszym pytaniem?

0

Bo brak porządku psuje mi nieco system wyświetlania. Myślałem że jest jakiś prosty sposób na uporządkowanie tego.
No ale chyba będzie lepiej zrobić tak by w pętli odczytującej pomijać puste rekordy.
Dzięki.

A i jeszcze mam taki problem:
Chciałem sobie modyfikować to ręcznie ale w MySQL Control center wywala mi błąd:

[root@localhost:3306] ERROR 1146: Table 'bazatestowa.1' doesn't exist

Zainstalowałem MySQL Administrator 1.2.3 RC jednak tam opcje w menu odpowiedzialne za jakąkolwiek modyfikacje danych w tabeli są po prostu nieaktywne.

0

zawrzyj nazwę bazy w ``.

0

Mój cytat z innego forum: "Wartościami z kolumny 'ID' się nie 'bawi'. W ogóle nie powinny one być jakkolwiek zmieniane ani nie powinno się samemu przyznawać tych wartości bo później - tworząc różne relacje - może się okazać, że odwołujemy się do nie tego rekordu, który chcemy. Dlatego kolumna ta powinna być kluczem i mieć właściwość auto_increment, a jej wartości powinny być przyznawane nie przez użytkownika, tylko przez bazę."

Bo brak porządku psuje mi nieco system wyświetlania.

Tzn. jak wyświetlasz? Robisz: for ($i=0;$i<ilosc_rekordow;++$i) wyswietl_rekord_po_id($i); ?

No ale chyba będzie lepiej zrobić tak by w pętli odczytującej pomijać puste rekordy.

Jak puste? Jak wywalisz rekord to go nie będzie...

0

uzyj sort by, zeby dostac okreslona kolejnosc wierszy posortowanych po okreslonym polu. Jak chcesz miec wedlug kolejnosci zamieszczania to doloz kolumne timestamp z domyslna wartoscia aktualnego czasu i sortuj po czasie dodania wlasnie - czyli po ludzku. auto_increment gwarantuje unikalnosc i tylko tyle i az tyle. Opieranie sie na nim jako na polu do sortowania to pomylka.

0

Tak, natomiast w MySQL - ORDER BY

0

A tak mi cos wlasnie nie pasowalo w tym 'sort by' :P Ide spac ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1