Insert ID

Kluvanek Martin kluvanek na tesnet.cz
Pátek Červen 20 13:35:14 CEST 2003


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?

> 
> 
>>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?

>>Varianta 2)
>>Nerobit trigger na insert ale nechat to na insertujucu aplikaciu, ktora 
>>musi pre kazdy insert zavolat SEQ_A.NEXTVAL, zapamatat si tuto hodnotu v 
>>aplikacii , pouzit ju na insert do A a po case ju pouzit i pre insert 
>>pre B. Robi to tusim jedno vlakno, tak nieje velky problem, aby si 
>>pamatalo posledny rozpracovany insert.
>>(no je to take divne)
> 
> 
>  Toto je celkem bezne. Nedrive vygenerovat ID a pak pouzivat.
No len je na aplikacii, aby na to nezabudla....
Je elegantnejsie to co sme sa bavili predtym....




-- 
Martin Kluvanek
ved.odd. vyvoje (head of development department)
TES s.r.o
Testovani Energetickych Systemu (Testing of Energetical Systems)

Prazska 597
674 01 Trebic
Czech republic
tel:568 8384 28  (+420 5688384 28)
fax:568 8384 27  (+420 5688384 27)
homepage: http://www.tesnet.cz



Další informace o konferenci Test