ďťż
 
=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?= ďťż
 
=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?=



Piotrek_20 - 21-07-2007 00:08
=?iso-8859-2?q?Jak_si=EA_robi_insert_do_tabel_z_relacj=B1_1:1 ?=
  Pewno dla Was to trywialne pytanie ale mam taki problem.

Baza stoi na postgresie 8.2, tabele nieco inne są ale uproszę to do
takiego prostego przykładu.

Mam 2 tabele Mama(idMama (PK), imie) oraz Tata (idTata(PK),
Mama_idMama(FK), imie).
Relacja miedzy nimi 1:1.

Zastanawiam się jak zrobić jednoczesnie inserta sql do obu tabel tak:
ze wrzucają najpierw nowy rekord do tabeli mama, znac juz jego
wartosc, aby pozniej przypisać tą wartość do mojego FK -> Mama_idMama,

A mianowicie robie: insert into mama values (blablabla) i tutaj doda
mi np. idMama = 21434,
a pozniej chce zrobic insert into Tata i w miejsce Mama_idMama wrzucic
moje = 21434.

Problem polega na tym ze klucze glowne w Mama i Tata nie są identyczne
mogą miec rozne wartosci. np Mama się rozwiedzie z tatą, to wywalamy
tatę i pozniej dopisujemy nowego tatusia z kluczem mamy:P

A tak powaznie ot nie wiem jak podczas tych dwóch insertów
wykombinować skąd wziąść wartosc klucza.
Myslalem nad zrobieniem selecta zaraz po insercie do tabeli mama i
zczytywac wartosc klucza mamy, ale czy przy duzym obciążeniu bazy tzn
czestych insertach to się nie zchrzani.
Pozdrawiam





A.L.E.C - 21-07-2007 00:08

  Piotrek_20 wrote:

>
> A tak powaznie ot nie wiem jak podczas tych dwóch insertów
> wykombinować skąd wziąść wartosc klucza.
> Myslalem nad zrobieniem selecta zaraz po insercie do tabeli mama i
> zczytywac wartosc klucza mamy, ale czy przy duzym obciążeniu bazy tzn
> czestych insertach to się nie zchrzani.

w postgresie 8.2 masz INSERT INTO ... RETURNING ...., ale osobiście nie
widzę problemu w odczytaniu wartości sekwencji między insertami.

--
Aleksander 'A.L.E.C' Machniak http://alec.pl gg:2275252
LAN Management System Developer http://lms.org.pl




Piotrek_20 - 21-07-2007 00:08
=?iso-8859-2?q?Re:_Jak_si=EA_robi_insert_do_tabel_z_relacj=B1 _1:1?=
 
> ale osobiście nie
> widzę problemu w odczytaniu wartości sekwencji między insertami.

A czy moglbys mi rozwinąć to zdanie jak to powinienem zrobic..?




Szuwarek - 21-07-2007 00:08

  > Problem polega na tym ze klucze glowne w Mama i Tata nie są identyczne
> mogą miec rozne wartosci. np Mama się rozwiedzie z tatą, to wywalamy
> tatę i pozniej dopisujemy nowego tatusia z kluczem mamy:P
Jeżeli myślisz o rozwodach, jednocześnie piszesz o relacji 1:1 to wg
mnie nie powinieneś na ID zakładać PK, tylko zrobić trzecią tabelę np.
małżeństowo (id_Mama, id_Tata), a wyrzucić id_mama z tabeli taty. Wtedy
wpisywać aktualny związek. Jeżeli do tej tabeli dodasz datę końca lub
początku związku to przez datemax() wybierać aktualny związek, a
jednocześnie masz możliwość wyświetlenia historii związków. Jeżeli
dodasz obie daty to możesz wyselekcjonować osoby aktualnie do wzięcia
lub pozostające w związku. Być może jednak moje rozważania idą zbyt daleko.
Pozdrawiam Szuwarek





hubert depesz lubaczewski - 21-07-2007 00:08

  Dnia 20.07.2007 Piotrek_20 <anna_kotek@o2.pl> napisał/a:
> A czy moglbys mi rozwinąć to zdanie jak to powinienem zrobic..?

zakładam, że id nadajesz z sekwencji/seriala.
poczytaj o funkcji currval()

depesz

--
quicksil1er: "postgres is excellent, but like any DB it requires a
highly paid DBA. here's my CV!" :)
http://www.depesz.com/ - blog dla ciebie (i moje CV)




chester - 21-07-2007 00:08

  Szuwarek pisze:
>> Problem polega na tym ze klucze glowne w Mama i Tata nie są identyczne
>> mogą miec rozne wartosci. np Mama się rozwiedzie z tatą, to wywalamy
>> tatę i pozniej dopisujemy nowego tatusia z kluczem mamy:P
> Jeżeli myślisz o rozwodach, jednocześnie piszesz o relacji 1:1 to wg
> mnie nie powinieneś na ID zakładać PK, tylko zrobić trzecią tabelę np.
> małżeństowo (id_Mama, id_Tata), a wyrzucić id_mama z tabeli taty. Wtedy
> wpisywać aktualny związek. Jeżeli do tej tabeli dodasz datę końca lub
> początku związku to przez datemax() wybierać aktualny związek, a
> jednocześnie masz możliwość wyświetlenia historii związków. Jeżeli
> dodasz obie daty to możesz wyselekcjonować osoby aktualnie do wzięcia
> lub pozostające w związku. Być może jednak moje rozważania idą zbyt daleko.

Raczej nie, wszak nikt nie mówił że tatuś może być przyporządkowany
*rownoczesnie* tylko jednej mamusi (lub odwrotnie, ale to chyba dość
rzadkie przypadki). IMHO bez trzeciej tabeli się nie obejdzie. ;-)
A pomyśl nad układem relacji gdy chcesz też mieć babcie i mamy w
osobnych tabelach a masz do czynienia z kazirodztwem? :]

chester

PS. Tak to jest jak się nie podaje rzeczywistych danych tylko się
wymyśla 'życiowe' przykłady, a jest piątkowy wieczór ;-)
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO Czy zna (obsługuje) ktoś program Iso Draw ? MYSQL - kodowanie w ISO-PL strona plus baza w iso do utf-8 Kodowanie: z iso na utf Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8 =?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?= =?iso-8859-2?q?Ati_Mobility_Radeon_X300_W_Notebooku_Jak_Zwi=E Akszy=E6_Ilo=B6=E6_Grafiki_Poprzez_Wsp=F3=B3dziele nie_Z_Ramu=3F=3F=3F?= Manager =?ISO-8859-2?Q?font=F3w=2E=2E=2E?= =?iso-8859-2?q?gdzie_naprawi=E6_tablet_wacoma=3F=3F=3F=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • fantazia.htw.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com