[pgsql] Klucz glowny bedacy referencja???
Jan Mazur - 08-09-2006 01:56
[pgsql] Klucz glowny bedacy referencja???
Witam, Mam nastepujace pytanie czy istnieje mozliwosc zrobienia czegos takiego zeby pole tabeli bedace jednoczesnie referencja bylo kluczem glownym tabeli? W chwili obecnej zrobilem cos takiego:
CREATE TABLE Osoba ( idOsoba SERIAL NOT NULL, ... );
CREATE TABLE Personel ( idPersonel INTEGER REFERENCES Osoba (idOsoba) ON DELETE CASCADE ON UPDATE CASCADE, ... PRIMARY KEY(idPersonel) );
Jednak nie przynosi to oczekiwanego rezultatu (baza zachwouje sie jakby referencja nie istniala - usuniecie rekordu z Osoba nie powoduje usunecia rekordu powiazanego z Personel).
Moze ktos wie co jest nie tak???
Pozdrawiam, Jan
Paweł Matejski - 08-09-2006 01:56
Jan Mazur wrote: > Witam, > Mam nastepujace pytanie czy istnieje mozliwosc zrobienia czegos takiego > zeby pole tabeli bedace jednoczesnie referencja bylo kluczem glownym > tabeli? W chwili obecnej zrobilem cos takiego: > > CREATE TABLE Osoba ( > idOsoba SERIAL NOT NULL, > ... > ); > > CREATE TABLE Personel ( > idPersonel INTEGER > REFERENCES Osoba (idOsoba) > ON DELETE CASCADE > ON UPDATE CASCADE, > ... > PRIMARY KEY(idPersonel) > ); > > Jednak nie przynosi to oczekiwanego rezultatu (baza zachwouje sie jakby > referencja nie istniala - usuniecie rekordu z Osoba nie powoduje > usunecia rekordu powiazanego z Personel). > > Moze ktos wie co jest nie tak???
Pewnie coś źle robisz. -- P.M.
Adam Buraczewski - 08-09-2006 01:56
Jan Mazur <mazu@o2.pl_nospam> wrote: > Mam nastepujace pytanie czy istnieje mozliwosc zrobienia czegos takiego > zeby pole tabeli bedace jednoczesnie referencja bylo kluczem glownym > tabeli? W chwili obecnej zrobilem cos takiego:
Jak najbardziej tak możesz zrobić.
> CREATE TABLE Osoba ( > idOsoba SERIAL NOT NULL, > ... > ); > > CREATE TABLE Personel ( > idPersonel INTEGER > REFERENCES Osoba (idOsoba) > ON DELETE CASCADE > ON UPDATE CASCADE, > ... > PRIMARY KEY(idPersonel) > ); > > Jednak nie przynosi to oczekiwanego rezultatu (baza zachwouje sie jakby > referencja nie istniala - usuniecie rekordu z Osoba nie powoduje > usunecia rekordu powiazanego z Personel).
U mnie działa. Właściwie niemożliwe, żeby nie działało, ale pod warunkiem że zrobiłeś wszystko popranie. Mógłbyś podać jakiś konkretny przykład, bo w powyższym dużo brakuje (np. idOsoba musi byc PRIMARY KEY albo przynajmniej UNIQUE, inaczej Postgres nawet nie stworzy takiego powiązania).
Pozdrawiam!
-- Adam Buraczewski <adamb (at) nor (dot) pl> * Linux user #165585 GCS/TW d- s-:+>+:- a C+++(++++) UL++++$ P++ L++++ E++ W+ N++ o? K w-- O M- V- PS+ !PE Y PGP+ t+ 5 X+ R tv- b+ DI D G++ e+++>++++ h r+>++ y?
Jan Mazur - 08-09-2006 01:56
Adam Buraczewski napisał(a):
> U mnie działa. Właściwie niemożliwe, żeby nie działało, ale pod > warunkiem że zrobiłeś wszystko popranie. Mógłbyś podać jakiś > konkretny przykład, bo w powyższym dużo brakuje (np. idOsoba musi byc > PRIMARY KEY albo przynajmniej UNIQUE, inaczej Postgres nawet nie > stworzy takiego powiązania).
Skasowalem wszystkie tabele i stworzylem jeszcze raz teraz wszystko dziala. Przepraszam za falszwy alarm :)
Pozdrawiam, Jan
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
[pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?=
[sql][pgsql] zapytanie sql
[pgsql] Wykonanie triggera po =?ISO-8859-2?Q?zako=F1czeniu_tra?==?ISO-8859-2?Q?nsakcji?=
[pgsql] =?ISO-8859-2?Q?Prawid=B3owe_post=EApowanie_w_przyp?==?ISO-8859-2?Q?adku_awarii?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
[pgsql] 7.4 =?ISO-8859-2?Q?og=B3upia=B3_przy_zak=B3adaniu_?==?ISO-8859-2?Q?indeksu?=
[pgsql] Zmiana schematu do =?ISO-8859-2?Q?kt=F3rego_nalezy_o?==?ISO-8859-2?Q?biekt=2E?=
Która z baz: [PGSQL] czy [MySQL] będzie lepsza w takim zastosowaniu (masowe UPDATE)
PL/pgSQL jak =?ISO-8859-2?Q?u=BFy=E6_transakcji=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.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 |
|