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