Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Usuwanie rekordów - integralność
tomuś
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.03.2004

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


Problem z usunięciem rekordów.
Usuwam z db pracodawcę o określonym numerze NIP zapytaniem
[sql:1:54eb29c322]delete from pracodawcy where nip=$nip;[/sql:1:54eb29c322]
i jednocześnie chce usunąć z tabeli oferty wszystkie oferty przyporządkowane do tego pracodawcy. Chciałem połączyć te 2 zapytania (lub wymusić więzy integralności zmieniając typ kolumny na InnoDB i próbując określić związek Constraints w MySQL-Front v 3.0 – ale wywalało mi ciągle błąd). Wracając do tematu bo chyba co nieco się od niego oddaliłem.
Poszedłem na łatwiznę i wykonałem 2 oddzielne zapytania usuwające odpowiednie wpisy, ale…, został mi jeszcze jeden problem mam 2 tabele w których przechowuję dane związane z tabelą oferty (mianowicie województwa_ofert i jezyki-ofert jako klucze obce w tych tabelach jest id_oferty). Problem w tym że nie wiem jak usunąć wpisy z tych tabel dla każdej usuwanej razem z pracobiorcą oferty. Musze nadmienić że wszystko odbywa się z poziomu php. Z góry dzięki za pomoc.


--------------------
Tomuś
Go to the top of the page
+Quote Post
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Jeśłi nie mozesz skorzystać z powiazań na poziomie bazy danych, to nie pozostaje ci nic innego, niż to, by przed usunięciem odpowiednich ofert, pobrać wszstkie pasujące id_ofert, a następnie, z kolejnych tabel usuwać rekordy w oparciu o zapytanie typu:
[sql:1:a75a224e60]
DELETE FROM tabela WHERE id_oferty IN ( '1', '2', '3', kolejne id oferty... )[/sql:1:a75a224e60]


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
tomuś
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 17.03.2004

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


Tego się obawiałem, ale miałem nadzieję że jest jakiś inny bardziej elegancki sposób.


--------------------
Tomuś
Go to the top of the page
+Quote Post
sobstel
post
Post #4





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

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


Cytat
mam 2 tabele w których przechowuję dane związane z tabelą oferty (mianowicie województwa_ofert i jezyki-ofert jako klucze obce w tych tabelach jest id_oferty). Problem w tym że nie wiem jak usunąć wpisy z tych tabel dla każdej usuwanej razem z pracobiorcą oferty. Musze nadmienić że wszystko odbywa się z poziomu php. Z góry dzięki za pomoc.


jesli dobrze zrozumialem mysle ze to by moglo poskutkowac (ostroznie z tym... hehe) - dziala od mysql 4.0.2 wzwyż...

[sql:1:409f1f9782]
DELETE wojew FROM wojew,oferty,pracobiorcy WHERE oferty.id_oferty=wojew.id_oferty AND oferty.id_pracobiorcy=pracobiorcy.id_pracobiorcy AND pracobiorcy.nip='$nip';
[/sql:1:409f1f9782]

(to samo dal jezykow...)

albo

[sql:1:409f1f9782]
DELETE FROM wojew USING wojew,oferty,pracobiorcy WHERE oferty.id_oferty=wojew.id_oferty AND oferty.id_pracobiorcy=pracobiorcy.id_pracobiorcy AND pracobiorcy.nip='$nip';[/sql:1:409f1f9782]
musisz to wykonac zanim skasujesz pracodawcow


--------------------
"If debugging is the process of removing bugs, then programming must be the process of putting them in..."
sobstel.org
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: 22.08.2025 - 05:41