Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> usuwanie kaskadowe, to chyba tak sie nazywa, usuwnaie z wielu tabel o danym id
koskitos
post 15.06.2006, 20:03:58
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


Chodzi mi o to, ze mam kilka tabel polaczonych ze soba polem pole_id.

Mam jakis warunek i on zwraca liste id (pole_id), ktore nalezy usunac z wszystkich tabel.

Czy inaczej mowiac chce usunac dane z kilku tabel o danym id spelniaujacych konkretny warunek.

To sie jakos nazywalo: kaskadowe usuawanie, czy jakos tak....

jak to sie robi? jakie wersje mysql to obsluguja?


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
bendi
post 15.06.2006, 20:18:46
Post #2





Grupa: Zarejestrowani
Postów: 401
Pomógł: 5
Dołączył: 14.09.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


CREATE TABLE -> type InnoDB
a później

FOREIGN KEY -> ondelete cascade


--------------------
Go to the top of the page
+Quote Post
koskitos
post 15.06.2006, 20:20:20
Post #3





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


ze jak?

daj mi przyklad zapytania jak to sie usuwa...


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post
SongoQ
post 15.06.2006, 21:48:24
Post #4





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
daj mi przyklad zapytania jak to sie usuwa...


Zapytanie wyglada normalnie
  1. DELETE FROM TABLE


Najwazniejsze w usuwaniu caskadowym jest typ relacji no i w przypadku mysqla typ tabel. Ale o tym @bendi pisal.


--------------------
Go to the top of the page
+Quote Post
koskitos
post 15.06.2006, 22:16:41
Post #5





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


hehe, ej czlowieku ty mi dales zapytanie usun z jednej tabeli

ja chce usunac z wielu tabeli

czyli to niby ma tak wygladac?
  1. DELETE FROM TABLE, table2


o co wam chodzi z tym typem relacji no?
jakby co mam zwykla tabele...

piszcie po ludzku


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post
Jarod
post 15.06.2006, 22:20:28
Post #6





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(koskitos @ 15.06.2006, 21:16 ) *
hehe, ej czlowieku ty mi dales zapytanie usun z jednej tabeli

ja chce usunac z wielu tabeli

czyli to niby ma tak wygladac?
  1. DELETE FROM TABLE, table2


o co wam chodzi z tym typem relacji no?
jakby co mam zwykla tabele...

piszcie po ludzku


Człowieku poszukaj. SongoQ już kiedyś o tym pisał.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
Kinool
post 15.06.2006, 22:34:44
Post #7





Grupa: Zarejestrowani
Postów: 560
Pomógł: 0
Dołączył: 15.07.2003
Skąd: Kwidzyn

Ostrzeżenie: (0%)
-----


na forum wielu leniwych smile.gif

ale do rzeczy smile.gif jak juz zostalo napisane musisz uzyc kluczy obcych polecam wiki albo google jesli nie wiesz czym one sa

dzieki nim pozesz powizac ze soba kilka tabel i uzuwajac rekord w tabeli "glownej" w tabelach gdzie sa ustawione klucze obce "polaczone" z tabele "glowna" polecenia kasowania lub edycji sa wykonywane automatycznie


--------------------
Go to the top of the page
+Quote Post
koskitos
post 15.06.2006, 22:55:00
Post #8





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


spoko, dzieki, chociaz Ty umiesz wytlumaczyc

ale mam pytanie: czy to usuwanie kaskadowe jest obslugiwane przez wszystkie wersje mysql, czy tylko 5?

bo widze, ze aby zaprojektowac baze z tym kluczem obcym to sie jakos inaczej projektuje?

bo w manualu znalazlem ze wystarczy dodac: FOREIGN KEY (reviewingid) REFERENCES reviewing (reviewingid) on delete cascade
a nie pisze zeby tabela byla innodb?

wogole czym sie rozni innodb od myisam?
jak normalnie dodaje tabele to dodaje innodb czy myisam?


OT:
ale ja nie jestem leniwy, bo tego szukalem, a o kluczu obcym nikt z poprzednikow nie pisal,
jak ktos nie wie, to go naprowadzcie, a nie rzucacie jakimis haslami


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post
suchy1
post 16.06.2006, 09:43:35
Post #9





Grupa: Zarejestrowani
Postów: 246
Pomógł: 8
Dołączył: 2.04.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Witam

mam podobny problem, chcialbym aby zapytanie zmienialo status w drugiej tabeli a dokladnie chodzi mi o takie cos:

  1. CREATE TABLE Pokoj
  2. (
  3. id_pokoju int(7) PRIMARY KEY AUTO_INCREMENT,
  4. STATUS ENUM("wolny", "zajety") DEFAULT "wolny" NOT NULL
  5. )Type=InnoDB;


Druga tabela

  1. CREATE TABLE wynajmowanie
  2. (
  3. id_wynajecia int(7) PRIMARY KEY AUTO_INCREMENT,
  4. id_klienta int(7) NOT NULL,
  5. id_pokoju int(7) NOT NULL,
  6. data_wynajecia numeric(6) NOT NULL,
  7. data_zwrotu numeric(6) NOT NULL,
  8. FOREIGN KEY(id_pokoju) REFERENCES pokoj(STATUS) UPDATE STATUS="wolny"
  9. )Type=InnoDB;


w momencie usuniecia jakiegos id_wynajecia chcialbym zmienic status w pokoju z "zajety" na "wolny" da sie takie cos zrobic ?

Z gory dzieki za odpowiedz smile.gif
Go to the top of the page
+Quote Post
SongoQ
post 16.06.2006, 11:00:53
Post #10





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%)
-----


@koskitos Piszesz pytanie i zadasz aby Ci kazdy krok po kroku to zrobil. Dostales 2 wskazówki co masz zrobic i nawet nie raczyles pogooglowac.

Cytat
ale mam pytanie: czy to usuwanie kaskadowe jest obslugiwane przez wszystkie wersje mysql, czy tylko 5?

Tam gdzie jest Inno DB z tego co pamietam to chyba bylo 4.0 albo jeszcze wczesniej tylko to bylo domyslnie wylonczone.

Cytat
wogole czym sie rozni innodb od myisam?

Inno DB ma wewneczne polaczenie (relacje) ale za to jest wolniejszy

Cytat
ale ja nie jestem leniwy, bo tego szukalem, a o kluczu obcym nikt z poprzednikow nie pisal,

A co pisal bendi w 2 poscie? Czy tak trudno wpisac te 3 slowa kluczowe w google?

Cytat
CREATE TABLE -> type InnoDB
a później
FOREIGN KEY -> ondelete cascade


Cytat
jak ktos nie wie, to go naprowadzcie, a nie rzucacie jakimis haslami

Wydawalo mi się ze to jest to samo.


--------------------
Go to the top of the page
+Quote Post
koskitos
post 17.06.2006, 14:21:07
Post #11





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 18.04.2004
Skąd: Z nikąd

Ostrzeżenie: (30%)
XX---


(...)

a to innodb jest duzo wolniejsze od myisam?questionmark.gif

chodzi mi o to, że czy jest sens robić tabele innodb, czy lepiej pozostawic
myisam??

bo w sumie mogę to trochę inaczej zrobić, ale oczywiscie z kaskadowym byloby lepiej

Ten post edytował koskitos 17.06.2006, 14:22:26


--------------------
kOskiToS :D
Go to the top of the page
+Quote Post
Jarod
post 18.06.2006, 18:29:52
Post #12





Grupa: Zarejestrowani
Postów: 1 190
Pomógł: 27
Dołączył: 23.04.2005

Ostrzeżenie: (0%)
-----


Cytat(koskitos @ 17.06.2006, 13:21 ) *
(...)

a to innodb jest duzo wolniejsze od myisam?questionmark.gif

Pewnie przy większej ilości zapytań zauważysz różnice. Nie wiem - niech się wypowiedzą inni.

Cytat(koskitos @ 17.06.2006, 13:21 ) *
chodzi mi o to, że czy jest sens robić tabele innodb, czy lepiej pozostawic
myisam??

bo w sumie mogę to trochę inaczej zrobić, ale oczywiscie z kaskadowym byloby lepiej


To od Ciebie zależy. MyIsam nie obsługuje transakcji. Ja zrezygnowałem z cascade - aplikacja sama tego pilnuje. Natomiast transakcje się przydają.

Nie wszystkie tabele muszą być innodb. częśc może być myisam - jak Ci wygodniej.


--------------------
”Godzina nauki w życiu nowoczesnego apostoła jest godziną modlitwy.”
(św. Josemaría Escrivá, Droga, 335)
Go to the top of the page
+Quote Post
SongoQ
post 18.06.2006, 21:24:17
Post #13





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%)
-----


Przede wszystkim narzut czasowy jest przy operacjach modyfikowania stanu bazy. Co lepsze wedlug mnie InnoDB przynajmniej prawie zawsze z tego korzystam bo jest obsluga transakcij. Jesli operujesz tylko na jednej tabeli to wsumie da sie obejsc ale jesli masz np 2 tabele i musisz wymusic powiazanie to sie az prosi InnoDB.

Testuj testuj i sam sie przekonasz co jest lepsze.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:42