Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Baza SQL rekordy. Jak bezpiecznie poukładać rekordy?

sakuwbarakushow 04 Mar 2011 15:46 1408 8
  • #1 04 Mar 2011 15:46
    sakuwbarakushow
    Warunkowo odblokowany

    Witam.
    Mam pewną tabelę w SQL i id rekordów trochę się poprzesuwały jest 1-7 po 7 jest 130 potem 10455 itd / itp.
    chciałbym ten index poukładać jakoś normalnie aby szło od 1 do 26 bo tyle mam rekordów. I tu pytanie czy ręczna zmiana ID rekordu jest bezpieczna i nic się nie zepsuje poprzez to ?
    I czy kolejne (nowe rekordy w bazie) będą np po 26 będzie 27 czy ostatnio zapamięty rekord czyli np 10555 zamiast jak powinno być 26 ?
    Jeżeli tak czy istnieje sposób aby to poukładać ? (bezpieczny)

    Pozdrawiam

    0 8
  • #3 04 Mar 2011 21:00
    sakuwbarakushow
    Warunkowo odblokowany

    Eh nie znam odpowiedzi na Twoje pytania.Jak mogę to sprawdzić ?

    0
  • #5 04 Mar 2011 21:16
    sakuwbarakushow
    Warunkowo odblokowany

    Nigdzie nie znalazłem ani w informacji o serwerze ani w meilu ani ustawieniach podanych danych.Bynajmniej do silnika bazy.
    Meta składniowa chodzi o sposób porównywania napisów w tabeli ? (jezeli to nie wiem)..
    Spytałem gdzie mam szukać tych informacji.

    0
  • #7 05 Mar 2011 08:06
    sakuwbarakushow
    Warunkowo odblokowany

    Z MySqulem się łączę ?
    Napisałem do admina jak będę miał odpowiedzieć wstawię w edycie.

    edit://
    Silnik bazy danych to : MySqul .

    Mechanizmy składowania:
    - InnoDB
    - MRG_MYISAM
    - BLACKHOLE
    - CSV
    - MEMORY
    - ARCHIVE
    - MyISAM.

    0
  • Pomocny post
    #8 05 Mar 2011 13:50
    Dżyszla
    Poziom 42  

    Nie ma czegoś takiego jak MySqul. Jest MySQL.
    To, jakie mechanizmy składowania są to jedno, a na jakich jest baza, w której chcesz dokonać modyfikacji?

    Jeśli to InnoDB z poprawnie zaprojektowanymi kluczami obcymi to albo modyfikacja nie będzie możliwa, albo wykona się poprawnie i nie zaburzy integralności danych.
    Jeśli to MyISAM lub ARCHIVE/CSV, to tam nie istnieją klucze obce, więc realizowane są wyłącznie w sposób wirtualny. W takich przypadkach (to może tyczyć się także niepoprawnie wykonanej bazie na InnoDB) zmiana musiałaby objąć jednocześnie wszystkie tablice, które odwołują się do tablicy, w której zmianę chcesz wykonać, poprzez wartość w zmienianej kolumnie.
    BLACHHOLE nie przechowuje żadnych danych, MEMORY jest tabelą tymczasową, a MRG_MyISAM jest złączeniem wielu tabel MyISAM.

    Co do samego wykonania, to można utworzyć tymczasową kopię tabeli, do której tzw. INSERTO-SELECTEM skopiuje się dane, lecz z wymuszeniem nowych wartości zmienianej kolumny. Alternatywnie można do tego użyć tymczasowej procedury składowanej, o ile jest to MySQL w wersji 5.1 lub nowszej, i o ile masz stosowne uprawnienia do tej bazy danych. Następnie kopią zastąpić należy pierwotną tabelę poprzez usunięcie pierwotnej i zmianę nazwy kopii na pierwotną.
    W przypadku użycia procedury możliwe jest pominięcie kopiowania całej tabeli, a wystarczy wprowadzić kopię kolumny (nie dotyczy CSV/ARCHIVE). Jeśli numer tej kolumny jest nadawany poprzez wartość auto_increment, to dodatkowo będzie trzeba zmodyfikować wartość tego licznika po wykonaniu operacji.
    Oczywiście można także użyć stosownego kodu PHP, lecz jeśli jest to duża tabela, to rozwiązanie może nie sprawdzić się wydajnościowo, a w skrajnym przypadku może zostać unicestwione przez serwer (tak zachowują się zabezpieczenia stosowane na serwerach wirtualnych, które chronią przed przeciążaniem serwera przez jednego z użytkowników).

    0
  • #9 05 Mar 2011 14:18
    sakuwbarakushow
    Warunkowo odblokowany

    Dobra dzięki za wykład.
    Jakoś sobie poradzę z tym względem tego.

    0