Insert do 2 tabel: KLIENCI --- ADRESY.
pietrina@orange.pl - 16-05-2007 00:01
Insert do 2 tabel: KLIENCI --- ADRESY.
Witam, nie moge sobie poradzic z insertem do tabeli KLIENCI zawierającej FK tabeli ADRESY. Jeśli zrobię najpierw insert do ADRESY a później KLIENCI ze zdefiniowaniem ostatniej komórki z ADRESY jest ok, ale tak jest przecież beznadziejnie, workaround zrobiłem aby pójść dalej.
Jak ten banał powinien wyglądać?? Tak przykładowo poniżej jak to moze wyglądać. PK są tutaj identity (baza Derby - DB2)
KLIENCI idKlienta(PK) idAdresu (FK) Imie Nazwisko
ADRESY idAdresu (PK) Adres
Pozdrawiam, Piotrek.
hubert depesz lubaczewski - 16-05-2007 00:01
On 2007-05-15, pietrina@orange.pl <pietrina@orange.pl> wrote: > Jeśli zrobię najpierw insert do ADRESY a później KLIENCI ze > zdefiniowaniem ostatniej komórki z ADRESY jest ok, ale tak jest > przecież beznadziejnie, workaround zrobiłem aby pójść dalej.
ale co ci w tym nie pasuje?
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)
Artur - 16-05-2007 00:01
Mała zmiana:
KLIENCI idKlienta(PK) Imie Nazwisko
ADRESY idAdresu (PK) idKlienta (FK) Adres
Najpierw wprowadzasz KLIENTA, baza generuje Ci KLIENCI:idKlienta (PK). Zapamiętujesz KLIENCI:idKlienta w zmiennej i jak wstawiasz ADRES podajesz to ID do pola ADRESY:idKlienta (FK), by związać z klientem.
Bez klucza idAdresu (PK) można by się obejść, ale taki sztuczny klucz zawsze się przydaje (by np usuwać określone adresy, jeśli klient ma ich wiele).
Na marginesie, w DB2 (choć nie wiem czy Derby to wspiera) można wykonać select z inserta (jednocześnie wstawiasz i pobierasz wygenerowaną wartość). Działa b.wydajnie, ponieważ to tylko jedna operacja SQL:
select idKlienta from new table ( insert into KLIENCI (imie, nazwisko) values ('Adam', 'Mickiewicz') ) as t;
-- Artur Wroński
pietrina@orange.pl - 17-06-2007 00:15
On 15 Maj, 23:35, Artur <artur.wron...@gmail.com> wrote: > Ma?a zmiana: > > KLIENCI > idKlienta(PK) > Imie > Nazwisko > > ADRESY > idAdresu (PK) > idKlienta (FK) > Adres > > Najpierw wprowadzasz KLIENTA, baza generuje Ci KLIENCI:idKlienta > (PK). > Zapami?tujesz KLIENCI:idKlienta w zmiennej i jak wstawiasz ADRES > podajesz to ID do pola ADRESY:idKlienta (FK), by zwi?za? z klientem. > > Bez klucza idAdresu (PK) mo?na by si? obej??, ale taki sztuczny klucz > zawsze si? przydaje (by np usuwa? okre?lone adresy, je?li klient ma > ich wiele). > > Na marginesie, w DB2 (cho? nie wiem czy Derby to wspiera) mo?na > wykona? select z inserta (jednocze?nie wstawiasz i pobierasz > wygenerowan? warto??). Dzia?a b.wydajnie, poniewa? to tylko jedna > operacja SQL: > > select idKlienta from new table ( > insert into KLIENCI (imie, nazwisko) values > ('Adam', 'Mickiewicz') > ) as t; > > -- Artur Wro?ski
Niestety nie poradzi?em sobie z tym pod Derby. Nie dzia?a select z inserta. W dokumentacji DERBY s? tylko podstawowe inserty. Nic mi pomocnego nie znalazlem.
Co do zamiany idAdresu, nie do ko?ca mi si? to podoba, bowiem uzale?nia nam Twój sposób tabel? Adresy od innych tabel. Je?li b?dziesz chcia? doda? powiedzmy tabel? Kierownicy, to wtedy b?dziesz móg? spokojnie operowa? idAdresy jako PK w tabeli Kierownicy. Ja u?ywam takiego typu danych, bardzo podobnie to u mnie wygl?da: http://www.databaseanswers.org/data_...tice/index.htm
Tylko, ?e u mnie mi?dzy Staff a Patients jest relacja Adresy po??czona mi?dzy lekarze a pacjenci relacj? jeden do jednego.
Jakie? propozycje jak to rozwi?za? w DERBY??
Pozdrawiam, Piotrek.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?=
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[mysql] Wyszukanie =?ISO-8859-2?Q?rekord=F3w=28powiazane_tabel?==?ISO-8859-2?Q?e=29?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
zapytanie do =?ISO-8859-2?Q?dw=F3ch_tabel_z_limitem_wier?==?ISO-8859-2?Q?szy?=
[mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?=
Zapytanie SQL z =?ISO-8859-2?Q?pust=B1_tabel=B1?=
[MySQL] Backup tabel przez "BACKUP" i problem z prawami dostępu :(
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
=?iso-8859-2?Q?Problem_z_left_join_-_=B3=B1czenie_kilku_tabel.?=
zanotowane.pldoc.pisz.plpdf.pisz.pllisinski.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 |
|