Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacyjne usuwanie danych(?), jak usunąć automatycznie rekord z innej tabeli?
dantekir
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Świętochłowice

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


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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
omeck
post
Post #2





Grupa: Zarejestrowani
Postów: 79
Pomógł: 7
Dołączył: 2.07.2005
Skąd: Lublin

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


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
Go to the top of the page
+Quote Post
dantekir
post
Post #3





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Świętochłowice

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


Jednak nie działa (przesyłam screeny z tabel) męczę to już trzeci dzień (IMG:http://forum.php.pl/style_emoticons/default/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ż (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
i muszę stwierdzić że te więzy integralności to super sprawa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
odkryłem na nowo sql-a (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
genialne ah.... (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował dantekir 9.07.2009, 07:56:21
Go to the top of the page
+Quote Post
omeck
post
Post #4





Grupa: Zarejestrowani
Postów: 79
Pomógł: 7
Dołączył: 2.07.2005
Skąd: Lublin

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


Cytat(dantekir @ 9.07.2009, 12:51:54 ) *
i muszę stwierdzić że te więzy integralności to super sprawa (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)


masz absolutna rację ;-)

BTW
w czystym sql, poszłoby Ci pewnie znacznie szybciej ;-)

Ten post edytował omeck 9.07.2009, 12:38:13
Go to the top of the page
+Quote Post
dantekir
post
Post #5





Grupa: Zarejestrowani
Postów: 66
Pomógł: 0
Dołączył: 14.06.2004
Skąd: Świętochłowice

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


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
Go to the top of the page
+Quote Post
Zbłąkany
post
Post #6


Administrator serwera


Grupa: Developerzy
Postów: 521
Pomógł: 13
Dołączył: 2.04.2004
Skąd: 52°24' N 16°56' E

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


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:25