posledni automaticky generovany id a prenositelnost

Michal Hlavac hlavki na medium13.sk
Úterý Srpen 10 09:09:50 CEST 2004


Zdenek Janis wrote:
> Presto mi unika zakladni problem ;-) (Posledni dobou dost casto ;-))
> 
> Klidne mohu pouzit typ (big)serial v tabulce a pak:
> 1) klidne to tabulky vlozit zaznam a nechat, aby se tam samo 
> vygenerovalo ID (napr.) a jeho hodnotu ziskam pohodlne volanim pres 
> currval(seq).
> 2) A nebo proste nejdrive zavolam nextval(seq) a pak to puziju do 
> insertu v tabulkach.
> 
> Me se jevi oba postupy stejne "narocne".
> Osobne stejne nejacasteji pouzivam funkci, ktera vlozi zaznam a vrati ID.

(1) No, zase tak 100% ekvivaletne to nie je...
Ten prvy sposob, teda:
premena := nextval(seq);
a teraz robim inserty s premennou...

(2) Druhy sposob:
INSERT INTO tabulka VALUES (nextval(seq), ...)
a teraz sa pytam na curval(seq) a pouzivam ho...

Na prvy pohlad sa to zda rovnako... Az na to, ze (2) musim vykonat v 
jednej transakcii... Pretoze, co ak mi v (2) niekto medzi insertom a 
curval vykona dalsi insert... Na curval(seq) dostanem zle cislo...
Kdezto (1) nemusim vykonavat v jednej transakcii...

Teda urcite bezpecnejsi je sposob (1)...

hlk

-- 

[ miso hlavac ][ hlavki na medium13.sk ][ http://www.medium13.sk ]
[ icq:94900232 ][ callto://hlavki ]


Další informace o konferenci Test