posledni automaticky generovany id a prenositelnost

Jan Serak sherry na pikebo.cz
Úterý Srpen 10 09:25:51 CEST 2004


Michal Hlavac wrote:
> Zdenek Janis wrote:
> (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... 

<flame>

To je tedy dost divoka implementace, pokud funguje takto.

Mejme priklad (na jednotlivych radcich naznacen casovy prubeh provadeni 
prikazu):

Session #1				Session #2
-------------				--------------

p := nextval(seq); 	-- v p je 14	
p := currval(seq);	-- v p je 14

					x := nextval(seq); -- x=15
					x := currval(seq); -- x=15

p := currval(seq);	-- !!!!


Pokud po provedeni prikazu s vykricniky je v p cokoli ruzneho od 14, pak
je to nepouzitelna implementace sekvenci (resp. pouzitelna za podminky 
bezvyhradne discipliny uzivatelu, kterou lze vynutit pouze organizacne).

</flame>

Jan Serak



Další informace o konferenci Test