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