Posted By: Libb (Libor) on 'CZdatabases'
Title:     Re: Paralelni system
Date:      Wed Oct 31 10:13:50 2001

Bohuzel to je v realnem nasazeni a ja z jistych duvodu nemuzu pouzit identitu 
:-(
 

> > Pokud napisu priblizne tohle
> > INSERT INTO table VALUES (id, x) (SELECT MAX(ID)+1 as id, x FROM table)
> > proste chci rucne identitu - hrozi mi, ze mi tam nkdo vpadne a nastane
> > kolize
> > nebo to SQL server udela "atomicky"? Pokud bych napsal
> > SELECT MAX(ID) + 1 as x FROM table
> > INSERT INTO TABLE VALUES (ID,x) %ID%,x
> > %ID% by byl vysledek predchoziho selectu, tak je to urcite spatne - to jen
> > pro ilustraci, ze nejsem uplne blbej :-)
> 
> Zalezi na typu databaze a take zalezi na urovni seralizovatelnosti, jakou 
> vyzadujes. Vetsina databazi (nevim o zadne, co "ne") dela pri jednom prikazu
> 
> defaultne "begin" a na konci "commit", pokud nemas transakce zapnute rucne 
> (pres vic SQL prikazu). Na druhou stranu nejsem presvedceny o tom, ze by 
> vetsina databazi mela defaultne nastavenou tu nejvyssi serializovatelnost 
> transakci, tj. nejvetsi bezpecnost, ale take nejnizsi vykon. Opak je 
> pravdou... Ale nejsem db odbornik:-), at se ozvou jini... 
> 
> Myslim, ze nejjednodussi na zjisteni, zda to ten Tvuj server dela tak nebo 
> onak bude, kdyz si spustis dve konzole, na obe napises explicitni begin, 
> vykonas je v kolidujicim poradi a uvidis, jake budou vracet vysledky. Pak 
> muzes pripadne v manualu koumat, jak to spravit.
> 
> snake
> 
> P.S. Pokud to nebyl jen priklad, ale potrebujes to nahore v realite, pak 
> databaze nabizeji sekvencni cisla, ktere Ti tohle zajisti automaticky.

                                                                      Libb




Search the boards