![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Usuwam rekordy z bazy danych załóżmy o id=3, o id=5, id=7
Czy na ich miejsce mogę dodać nowe rekordy, które będą miały id równe id usuniętych rekordów? Bo MySQL domyślnie dodaje dodaje rekordy o jeden większy od ostatniego, nie uzupełniając "dziur". Pytanie czy mogę te powstałe dziury w bazie uzupełnić manualnie, bez żadnych konsekwencji (domyślam się że MySQL bez powodu nie zostawia puste id usuniętych rekordów bez nadpisywania ich nowymi wartościami) Ten post edytował lamcpp 19.10.2011, 12:44:39 |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Pytanie stare jak świat cały: PO CO?
Co ci przeszkdzają te dziury? ID to ID. Jak coś kiedyś miało ID 3, to nie może się nagle okazać, że pod ID 3 jest nagle coś innego. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zawsze też możesz utrudnić sobie na siłę życie i nie używać autoincrement (IMG:style_emoticons/default/smile.gif) Ale popieram mojego przedmówcę - w wielu przypadkach gdy jest duża złożoność relacyjna pomiędzy tabelami lepiej nie nadpisywać ID.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 728 Pomógł: 76 Dołączył: 12.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie stare jak świat cały: PO CO? Co ci przeszkdzają te dziury? ID to ID. Jak coś kiedyś miało ID 3, to nie może się nagle okazać, że pod ID 3 jest nagle coś innego. A gdy masz zapytanie SELECT costam FROM tabela WHERE id BETWEEN $start AND $koniec Jeśli masz dziury w id to skrypt niepotrzebnie odwołuje się do pustych rekordów. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 706 Pomógł: 108 Dołączył: 12.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
A gdy masz zapytanie SELECT costam FROM tabela WHERE id BETWEEN $start AND $koniec Jeśli masz dziury w id to skrypt niepotrzebnie odwołuje się do pustych rekordów. amii - odnoszenie się do ID jak do wartości numerycznej jest nieprawidłowym myśleniem. ID powinno być totalnie niezależne od rekordu - jedyne co można zaakceptować to używanie ID do określenia kolejności dodania rekordów, choć i tutaj - gdy musimy znać chronologię - lepiej użyć osobnego pola datetime. Łatanie dziur ma jeszcze jedną wadę. Jeśli używamy ID w linkach (a większość ludzi używa), to wyszukiwarki będą prowadziły do nieprawidłowych wpisów. |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat A gdy masz zapytanie SELECT costam FROM tabela WHERE id BETWEEN $start AND $koniec Eee? Do jakich pustych rekordów? Jest taka zasada: piłeś, nie postuj (IMG:style_emoticons/default/wink.gif) Jeśli masz dziury w id to skrypt niepotrzebnie odwołuje się do pustych rekordów. A już trochę bardziej poważnie: może rozwiń swoją myśl, bo na chwilę obecną brzmi delikatnie rzecz mówiąc dziwnie. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Właściwie to pytam o jednorazowe uzupełnienie bazy.
Jeśli chodzi o wyszukiwarki - tu problemu nie ma, usunięte artykuły nie były wcześniej w internecie - poprostu baza została zaimportowana z localhosta. Potrzebuje tego dla uporzadkowania swojej bazy: w tej chwili rekordy zaczynają się od 80, chciałbym by kazdy rekord był zajęty przez osobny artykuł. |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat chciałbym by kazdy rekord był zajęty przez osobny artykuł. No i jest, niezależnie od ID jaki ma.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 1.10.2025 - 09:04 |