Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Relacyjne usuwanie danych(?)
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
dantekir
Witam,
pytanie pewnie bardzo proste...
mam table:
  1. opiekun
  2. id bigint
  3. idosoba bigint

oraz
  1. osoba
  2. id bigint
  3. pesel character(15)
  4. nrdowodu character varying(20)


chciałbym aby podczas usunięcia rekordu z tabeli opiekun automatycznie został usunięty rekord z tabeli osoba.
Jestem laikiem tutaj i mam słabe pojęcie jak to zbudować w oparaciu o phpPgAdmin oraz relacje kluczy zewnętrznych?
help...
omeck
Cytat(dantekir @ 8.07.2009, 23:37:36 ) *
chciałbym aby podczas usunięcia rekordu z tabeli opiekun automatycznie został usunięty rekord z tabeli osoba.
Jestem laikiem tutaj i mam słabe pojęcie jak to zbudować w oparaciu o phpPgAdmin oraz relacje kluczy zewnętrznych?
help...


Tam akurat możesz wszystko wyklikać :-) Stwórz sobie najpierw tabelkę osoba (typ pola id zamień na serial, ustaw to jako klucz głowny i not null)
Potem podobnie stwórz tabelkę opiekun. Następnie kliknij w nazwę tabelki (opiekun). W gornym menu indeksy - nazwij go sobie jakoś wybierz pole id_osoba i w polu gdzie wprowadź nazwę tabelki osoba itd. Kaskadowe usuwanie, które Cię interesuje jest w zakładce wiezy integralności
dantekir
Jednak nie działa (przesyłam screeny z tabel) męczę to już trzeci dzień smile.gif
Tabela Opiekun:
http://www.ulotna.chwilka.pl/plik.graficzn...piekun_kol.html
http://www.ulotna.chwilka.pl/plik.graficzn...kun_indexy.html
http://www.ulotna.chwilka.pl/plik.graficzn...ekun_wiezy.html

tabela osoby:
http://www.ulotna.chwilka.pl/plik.graficzn..._osoba_kol.html
http://www.ulotna.chwilka.pl/plik.graficzn...oba_indexy.html
http://www.ulotna.chwilka.pl/plik.graficzn...soba_wiezy.html

Działa mi za to w drugą stronę, gdy usunę rekord z Osoby to usuwany jest rekord z Opiekun,
no niby też dobrze - ale w praktyce będę usuwać raczej opiekunów.

poradziłem sobie już tongue.gif
i muszę stwierdzić że te więzy integralności to super sprawa biggrin.gif
odkryłem na nowo sql-a winksmiley.jpg
genialne ah.... smile.gif
omeck
Cytat(dantekir @ 9.07.2009, 12:51:54 ) *
i muszę stwierdzić że te więzy integralności to super sprawa biggrin.gif


masz absolutna rację ;-)

BTW
w czystym sql, poszłoby Ci pewnie znacznie szybciej ;-)
dantekir
heh...
a może ktoś wie dlaczego index mimo iż wyczyszcze sekwencje rozpoczyna mi się zawsze od 2 nie od 1?
id integer NOT NULL nextval('jednostka_id_seq'::regclass)

wartość minimalną, i ostatnią wartość nie mogę ustawić na 0
http://www.ulotna.chwilka.pl/plik.graficzn..._sekwencja.html
Zbłąkany
Dlatego, że nextval zwraca następną wolną wartość w sekwencji, a skoro wartość 1 jest już ustawiona, to następna po niej jest wartość 2. Użyj setval:
  1. SELECT SETVAL( 'jednostka_id_seq' , 1 , FALSE );

Więcej informacji znajdziesz tutaj smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.