Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Usuwanie z bazy
Poczatkujacy_Web
post
Post #1





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Co zrobic przy tworzeniu bazy tak aby po usunieciu danego elementu usowalo sie wszystko co z nim zwiazane?

przyklad:

baza: firmy
tabele: firmy, kategorie, powiazania

kasuje dana firme a ona znika z powiazan.

jak to zrobic?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
cv65
post
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


Jeżeli w firmy, kategorie, powiazania masz ID firmy z tabeli firmy
To wykonaj zapytania DELETE FROM na wszystkie tabele pod tym ID
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #3





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


a jesli w kategoriach nie mam id_firmy?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Wystarczy dodać on delete cascade na kluczu obcym, pod warunkiem, że istnieje w odpowiedniej tabeli.


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cv65
post
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


to w jaki sposób ta tabela jest powiązana z poprzednimi ?
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #6





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


firmy:
id_firmy
nazwa
itd

kategorie
id_kategori
nazwa

powiazanie
id_powiazania
id_firmy
id_kategori

tak wyglada baza, a jak wygldaja relacje to chyba widac

Cytat(darko @ 26.08.2012, 19:42:27 ) *
Wystarczy dodać on delete cascade na kluczu obcym, pod warunkiem, że istnieje w odpowiedniej tabeli.



Podaj przykład jakiś jak możesz
Go to the top of the page
+Quote Post
cv65
post
Post #7





Grupa: Zarejestrowani
Postów: 94
Pomógł: 9
Dołączył: 12.04.2009

Ostrzeżenie: (20%)
X----


Zrób select na powiazanie wyciągnij id_kategori i daj DELETE FROM na kategorie z tym wyciągnietym ID
Go to the top of the page
+Quote Post
darko
post
Post #8





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Przy tworzeniu tabel


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #9





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


taka skladnia jest ok?

  1. CREATE TABLE powiazanie (
  2. id_powiazania int (50) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  3. id_firmy int (50) FOREIGN KEY REFERENCES firmy(id_firmy) ON DELETE CASCADE,
  4. id_kategori int (50) FOREIGN KEY REFERENCES kategorie(id_kategori) ON DELETE CASCADE
  5. )
Go to the top of the page
+Quote Post
darko
post
Post #10





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Nie chodzi o stworzenie nowej tabeli, a o wykonanie takiego powiązania za pomocą kluczy obcych, aby w składni tworzącej tabele móc dodać klauzulę on delete cascade i zwyczajowo robi się to na samym początku, tj. tworząc strukturę bazy danych. Teraz, jeżeli posiadasz dwie tabele, z której przynajmniej jedna posiada klucz obcy, to możesz wykonać następujące czynności *):
(za X oznaczam docelową tabelę, na której pracujemy)
1)
  1. SHOW CREATE TABLE X
- pokaże Ci polecenie sql, które utworzyło tabelę
2) teraz zmodyfikuj polecenie usuwając klucz obcy:
  1. ALTER TABLE X DROP FOREIGN KEY <foreign KEY name>

3) teraz dodaj klucz z powrotem tym razem podając klauzulę on delete cascade:
  1. ALTER TABLE X ADD FOREIGN KEY(POLE_KLUCZA) REFERENCES REFERENCJA(POLE_REFERENCJI) ON DELETE cascade


voila
Literatura:
1)
2)

*) podane czynności wymagają posiadania klucza obcego w tabeli określonej jako X.


Ten post edytował darko 26.08.2012, 20:53:36


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
Poczatkujacy_Web
post
Post #11





Grupa: Zarejestrowani
Postów: 145
Pomógł: 0
Dołączył: 30.07.2012
Skąd: Łódź

Ostrzeżenie: (10%)
X----


Mam dwie tabele teraz:

firmy:
id_firmy
nazwa
itd

kategorie:
id_kategori
nazwa

i teraz chce stworzyc 3cia ktora bedzie laczyc te dwie:

powiazanie:
id_powiazania
id_firmy
id_kategori

Chce to zrobic tym kodem:

  1. CREATE TABLE powiazanie (
  2. id_powiazania int (50) PRIMARY KEY NOT NULL AUTO_INCREMENT,
  3. id_firmy int(50) NOT NULL,
  4. id_kategori int(50) NOT NULL,
  5. CONSTRAINT `powiazanie` FOREIGN KEY (`id_firmy`) REFERENCES
  6. `firmy` (`id_firmy`) ON DELETE CASCADE,
  7. CONSTRAINT `powiazanie` FOREIGN KEY (`id_kategori`) REFERENCES
  8. `kategorie` (`id_kategori`) ON DELETE CASCADE
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf8


Zerknijcie czy tak moze byc?
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 Aktualny czas: 19.08.2025 - 16:06