![]() |
![]() |
-Code46- |
![]()
Post
#1
|
Goście ![]() |
Witam!
Wkońcu natrafiłem na problem dotyczący kasowania danych z bazy mysql. Temat dotyczy bardziej bazy niż php ale mam nadzieję, że mi pomożecie.. Mam kilka tabel. Kasując informacje z jednej, muszę usunąć odpowiednie dane z innych tabeli. Wiem, że instrukcji DELETE nie można użyć tak jak select. Dla każdej tabeli należy wywołać osobno instukcję DELETE. Poczytałem sobi o trancakcjach i blokowaniu ale nie wiem jak to zastosować w praktyce. Chodzi mi o to, że gdy skasuję z tablei kont użytkownika, a z drugiej tabeli (tam gdzie mam dane o użytkownikach) nie uda się skaować odpowiedniego wpisu (np z nieznanych przyczyn) to tabelę z kontami doprowadzę do stanu z przed wykonani instrukcji DELETE, po to aby baza się nie posypała. Jak to zrobić? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jak dokładnie (np na przykładzie mojej tabeli) takie powiązanie utworzyć? Dla konta_id z tabeli dane tworzysz index, nastepnie ustawiasz mu powiazanie. Np w phpMyAdminie jest to widok relacyjny i wybierasz tam wskazanie z klucza obcego do klucza podstawowego, czyli jaki klucz podstawowy ma byc kluczem obcym w tabeli dane. Cytat A co to za problem? Zle napisalem, raczej to nie jest problem ............ Poczytaj sobie na temat optymalizatora w MySQLu to zrozumiesz idea dzialania wyboru rekordow itd. Zobaczysz ze relacje przyspieszaja dzialanie bazy. Takie przynajmniej jest zalozenie. Kiedys dopadlem wspaniala ksiazeczke tylko oparta na ORACLE, tam troche inaczej dziala, ale jak sie czyta jak mozna baze dostroic to az wlosy staja. Troche odbieglem od tematu ale polecam zebys sie zainteresowal tym zagadnieniem. Cytat Czyli w książce jest błąd? Bo napisali że albo dodać type albo ustawić w pliku i wtedy wszystkie tworzone tabele będą INNODB.. Moze to od wersjie bazy zalezy, ale pamietam ze pod kazdym klientem MySQLa nie dalo sie nic zrobic, po przestawieniu configu poszlo (oczywiscie linux) Cytat Rozumiesz - AUTOCOMMIT=1 a ja i tak używam BEGIN i COMMIT. Zadziala ok. Masz ponizej kod sam sobie zobacz jak to sie odbywa. Wlaczaj i wylaczaj autocommit, mozesz tez komentowac samego commita i zobaczysz czy dodaje itd. Najlepiej jak zrobisz sobie kilka kombinacji tego kodu i sam sie przekonasz jak to jest. Czlowiek nie uwierzy i nie zrozumie jak na wlasne oczy nie zobaczy (heheheh)
Cytat A dalej w podrozdziale dotyczącym zakleszczeń opisywany jest przykład użytkownika A i B. Obydwaj stosują BEGIN i COMMIT i dochodzi do zakleszczenia. To sie zdarza, opisane jest w jaki sposob dochodzi do tego. Jak mozesz podaj autorow i nazwe ksiazeczki chetnie zapoznam sie z tym tematem. Odnosnie blokowanie i transakcji, mysle ze wystarcza tylko transakcje, jesli robisz dobra obsluge wszystkich zwracanych bledow i baza jest dobrze zaprojektowana to nie dojdzie do sytuacji jak zakleszczenie. Tak sobie mysle ze to moga byc 2 startujace transakcje blokujace 2 rekordy a nastepnie nawzajem przez siebie zablokowanych rekordow uzywaja i transakcje poprostu wisza. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 13:12 |