![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 6.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam taki problem, nie wiem jak napisać zapytanie które usuwa wszystkie rekordy w bazie danych w których id_people należy d konkretnej osoby. Oto struktura mojej bazy danych.
Próbuje napisać zapytanie ale nie bardzo wiem jak :
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Sądząc po strukturze bazy danych to jest jakiś poważniejszy projekt, więc zamiast usuwania osoby i powiązanych z nią rekordów proponowałbym zamiast tego oznaczyć ją jako nieaktywną. Aby to zrobić, powinieneś dodać nowe pole do tabeli people, i odpowiednio zmodyfikować zapytania aby dodatkowo uwzględniały wartość tego nowego pola. Być może także potrzeba będzie dodać podobne pole do innych tabel - tutaj musisz się zastanowić.
Jeżeli jednak chcesz nadal usuwać te rekordy, to najprościej chyba będzie napisać kilka zapytań, z których każde będzie usuwać dane z jednej tabeli. Możesz też poczytać o więzach kluczy obcych dla których ustawione jest ON DELETE CASCADE: FOREIGN KEY Constraints -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 6.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Sądząc po strukturze bazy danych to jest jakiś poważniejszy projekt, więc zamiast usuwania osoby i powiązanych z nią rekordów proponowałbym zamiast tego oznaczyć ją jako nieaktywną. Aby to zrobić, powinieneś dodać nowe pole do tabeli people, i odpowiednio zmodyfikować zapytania aby dodatkowo uwzględniały wartość tego nowego pola. Być może także potrzeba będzie dodać podobne pole do innych tabel - tutaj musisz się zastanowić. Jeżeli jednak chcesz nadal usuwać te rekordy, to najprościej chyba będzie napisać kilka zapytań, z których każde będzie usuwać dane z jednej tabeli. Możesz też poczytać o więzach kluczy obcych dla których ustawione jest ON DELETE CASCADE: FOREIGN KEY Constraints Jeśli chodzi o takie pole to już jest, nazywa sie widoczny w tabeli people i chyba przy tym zostanę. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Jak najbardziej powinieneś się przesiąść z MyISAM na InnoDB. Ustawiając jak kolega wspomniał na tabeli `people` opcję ON DELETE CASCADE, baza usunie wszystkie rekordy z powiązanych tabel, powiązane z usuniętym rekordem
![]() -------------------- eh, co polska wódka to polska wódka
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:06 |