[psql]delete cascade
J.Jackowski - 21-12-2005 12:16
[psql]delete cascade
Witam chciałbym sie dowiedziec jak usunac jakis rekord z tabeli cascadowo tzn aby usunał jednoczesnie wszystkie rekordy z nim powiazana za pomoca kluczy obcych. Niestety nie znalazłem nic na ten temat w manualu.
Jedynie co znalazłem to usuwanie cacadowe np tabel ale uzycie 'cascade' w instrukcji delete zwracała mi błedy.
Jak to mozna zrealizowac ??
pozdrawiam J.Jackowski
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 21-12-2005 12:16
J.Jackowski wrote: > Witam > chciałbym sie dowiedziec jak usunac jakis rekord z tabeli cascadowo tzn > aby usunał jednoczesnie wszystkie rekordy z nim powiazana za pomoca > kluczy obcych. Niestety nie znalazłem nic na ten temat w manualu. > > Jedynie co znalazłem to usuwanie cacadowe np tabel ale uzycie 'cascade' > w instrukcji delete zwracała mi błedy. > > Jak to mozna zrealizowac ??
Trzeba użyć prz tworzeniu klucza ON DELETE CASCADE, a kasuje się normalnie.
-- P.M.
J.Jackowski - 21-12-2005 12:16
Paweł Matejski napisał(a): > J.Jackowski wrote: > >> Witam >> chciałbym sie dowiedziec jak usunac jakis rekord z tabeli cascadowo >> tzn aby usunał jednoczesnie wszystkie rekordy z nim powiazana za >> pomoca kluczy obcych. Niestety nie znalazłem nic na ten temat w manualu. >> >> Jedynie co znalazłem to usuwanie cacadowe np tabel ale uzycie >> 'cascade' w instrukcji delete zwracała mi błedy. >> >> Jak to mozna zrealizowac ?? > > > Trzeba użyć prz tworzeniu klucza ON DELETE CASCADE, a kasuje się normalnie. >
Tak to ja wiem, ale czasami jak jest tylko strict też trzeba usuwac dane i dlatego sie pytam czy da sie to zrobic jakoś automatycznie, czy musze kazda tabelke reczneie usuwac. Klucza obcego nie moge na stałe dac jako cascade ze wzgledów bezpieczeństwa.
Pozdrawiam J.Jackowski
Artur Muszynski - 21-12-2005 12:16
> Tak to ja wiem, ale czasami jak jest tylko strict też trzeba usuwac dane i > dlatego sie pytam czy da sie to zrobic jakoś automatycznie, czy musze > kazda tabelke reczneie usuwac.
Tabelkę?
> Klucza obcego nie moge na stałe dac jako cascade ze wzgledów > bezpieczeństwa.
Mącisz coś. Jakie bezpieczeństwo? Usuwając ręcznie prędzej możesz coś pomieszać (np zapomnisz o where i po zawodach).
artur
> > Pozdrawiam > J.Jackowski
J.Jackowski - 21-12-2005 12:16
Artur Muszynski napisał(a): >>Tak to ja wiem, ale czasami jak jest tylko strict też trzeba usuwac dane i >>dlatego sie pytam czy da sie to zrobic jakoś automatycznie, czy musze >>kazda tabelke reczneie usuwac. > > > Tabelkę?
Sorrki masz rację nie tabelke tylko rekordy z tabeli :) > > >>Klucza obcego nie moge na stałe dac jako cascade ze wzgledów >>bezpieczeństwa. > > > Mącisz coś. Jakie bezpieczeństwo? Usuwając ręcznie prędzej możesz coś > pomieszać (np zapomnisz o where i po zawodach). >
No nie do końca. Uzytkownicy (uzyszkodnicy) maja możliwośc usuwania niektórych rzeczy, ale nie moga mieć możliwości ich usuniecia jesli jakaś 'zalezna' informacja jest w bazie. Jak pozwole im kaskadowo usuwac to potem Pani Kasia przyleci dlaczego tego nie ma ja usuneła to i to. Jak ma komunikat ze najppierw musi usunac to i tamto to jest wieksza szansa ze sie spróbuje przynajmniej zastanowic :)
To ze coś będzie usuwane 'z palca' nie oznacza utraty bezpieczeństwa - usuwanie zawsze robie w transakcji a po drugie trzeba patrzyc co sie usuwa :)
Pozdrawiam J.Jackowski
szaman - 21-12-2005 12:16
> >Tak to ja wiem, ale czasami jak jest tylko strict też trzeba usuwac dane >i dlatego sie pytam czy da sie to zrobic jakoś automatycznie, czy musze >kazda tabelke reczneie usuwac. Oczywiście, że się da - nie kumam czemu to masz ręcznie robić - napiszesz procedurę i będzie automatycznie ;-) >Klucza obcego nie moge na stałe dac jako cascade ze wzgledów bezpieczeństwa. > Mam taką sytuację na codzień a nawet nieco gorszą bo nie mam kluczy obcych ani głównych (dobrze, że chociaż indeksy są ;-) -- {67B14976-ABB4-4A3B-869B-84B5CCA1F569}
Grzegorz Szyszlo - 21-12-2005 12:16
J.Jackowski napisał(a):
> No nie do końca. Uzytkownicy (uzyszkodnicy) maja możliwośc usuwania > niektórych rzeczy, ale nie moga mieć możliwości ich usuniecia jesli > jakaś 'zalezna' informacja jest w bazie. > Jak pozwole im kaskadowo usuwac to potem Pani Kasia przyleci dlaczego > tego nie ma ja usuneła to i to. Jak ma komunikat ze najppierw musi > usunac to i tamto to jest wieksza szansa ze sie spróbuje przynajmniej > zastanowic :) > > To ze coś będzie usuwane 'z palca' nie oznacza utraty bezpieczeństwa - > usuwanie zawsze robie w transakcji a po drugie trzeba patrzyc co sie > usuwa :)
masz tabele A, ktora zalezy od tabeli B . Ale tabele B uzalezniasz od C w ten sposob, ze w C tworzysz rekord, i jego id wbijasz w B bez kaskadowego kasowania.
Wtedy kasujac A, klucz obcy usiluje (on delete cascade) usunac cos w B. Ale jesli w B nie da sie usunac, to cala transakcja sie wywala, i jestes w domu.
aha. wiersze niezabezpieczone, w polu ktore sluzy do wiazania B z C maja miec null.
cos mam wrazenie ze masz jakis powazny blad projektowy ;)
znik.
Grzegorz Szyszlo - 21-12-2005 12:16
J.Jackowski napisał(a):
> No nie do końca. Uzytkownicy (uzyszkodnicy) maja możliwośc usuwania > niektórych rzeczy, ale nie moga mieć możliwości ich usuniecia jesli > jakaś 'zalezna' informacja jest w bazie. > Jak pozwole im kaskadowo usuwac to potem Pani Kasia przyleci dlaczego > tego nie ma ja usuneła to i to. Jak ma komunikat ze najppierw musi > usunac to i tamto to jest wieksza szansa ze sie spróbuje przynajmniej > zastanowic :) > > > To ze coś będzie usuwane 'z palca' nie oznacza utraty bezpieczeństwa - > usuwanie zawsze robie w transakcji a po drugie trzeba patrzyc co sie > usuwa :)
Bazę można zaprojektować tak, aby możliwe było odkasowywanie, oraz zabezpieczanie wybranych danych przed przypadkowym usunięciem.
znik.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?ISO-8859-2?Q?[psql]_Polskie_t=B3umaczenie_?= =?ISO-8859-2?Q?licencji_BSD_dla_PostgreSQL=3F?=
[psql] Funkcja =?ISO-8859-2?Q?=B3=B1cz=B1ca_stringi?=
[psql] =?ISO-8859-2?Q?Ilo=B6=E6_godzin_w_intervale?=
[psql] Jak odczytać pg_index.indexprs w postaci nodeToString()?
PSQL - przepisac z jednej bazy do drugiej wybrane rek
[psql] Sprawdzenie jakie query sa obecnie wykonywane
psql zmiana pozycji kolumny w tabeli
[psql] Konfiguracja serwera i pg_restore
[psql] problem z UPDATE'm dla nast. sytuacji
[psql] problem z vacuum full analyze
zanotowane.pldoc.pisz.plpdf.pisz.ploefg.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|