Insert ID
Karel Zak
zakkr na zf.jcu.cz
Pátek Červen 20 13:59:38 CEST 2003
On Fri, Jun 20, 2003 at 01:35:14PM +0200, Kluvanek Martin wrote:
> Karel Zak wrote:
> >On Fri, Jun 20, 2003 at 01:07:12PM +0200, Kluvanek Martin wrote:
> >
> >>Karel Zak wrote:
> >>
> >>>>Tomu nejak nerozumim. Jak updatem dostanu to cislo do aplikace? Malokdy
> >>>
> >>>
> >>>Tady bylo mysleno, ze jednim update pridelite to poradove cislo
> >>>(vsimnete si nerikam PK). Pochopitelne do aplikace to musite dostat
> >>>selectem. Kazdopadne vse pekne bez zamku.
> >>
> >>Nedavno som riesil nieco podobne a dodnes neviem, ako sa k tomu spravne
> >>filozoficky postavit.
> >>Mam 2 tabulky spojene k sebe relaciou s kardinalitou 1:1 (presnejsie
> >>1:0:1 cize k jednemu zazznamu tabulky A moze existovat 0 az 1 zaznam
> >>tabulky B a k zaznamu z B musi existovat prave jeden z A)
> >>Rozdelenie je dane technologiou vzniku dat, inak by to kludne mohlo byt
> >>v 1 tabulke.
> >
> >
> > IMHO je 1:1/0 uchylka :-)
> Preklep, malo to byt 1:0..1 ale pochopil ste to spravne.
> V com presne je to uchylne?
Sam jste si odpovedel, 1:1 = jedna tabulka.
> >>Varianta 1)
> >>nechat ID generovat trigger na insert
> >>ale po inserte potrebujem zistit hodnotu pouziteho IDu ale tu neviem,
> >>pretoze ju videl akurat ten trigger.
> >
> >
> > Nevim jak v Oracle, ale treba PostgreSQL vraci u INSERTu 'oid' (interni
> > DB identifikator radku) do aplikace. Pak lze jednoduse udelat:
> >
> > SELECT pk FROM tab WHERE oid=<x>
> >
> > Nedivil bych se pokud by neco takoveho slo i u Oracle.
> Tak nejak som si to povodne predstavova.
> Je tam nieco ako ROWID (ma to hodnoty napriklad AAABqDAAHAAAAAMAAA)
> Ale zatial som nebol schopny zistit, ci je mozne to vyrazit a ako ho
> vyrazit rovno z insertu. Samozrejme v selekte uz potom pouzijem
> WHERE ROWID=blablaba
> Ako vypada ten insert v PostgreSQL?
Ted nevim jaky myslite :-) Pokud ten co vraci vlozena data tak ten
_mozna_ nekdo teprve implementuje (a stejne by to bylo dost neprenosne).
Pokud ten co vraci 'oid'. Tak je to normalni INSERT. PostgreSQL jako
odpoved vraci do klietske knihovny oid a je tam funkce PQoidValue()
kterou to cislo jde zjistit.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Další informace o konferenci Databases