Pouziti autoincrementu

Kouba Tomas tomas na neo.cz
Středa Červen 18 15:26:13 CEST 2003


Mily Adeltone,

mate zcela nepochybne pravdu. Ja jsem ten ktery se puvodne tento dotaz
vznesl a dospel jsem k nazoru, ze mate uplnou pravdu az na to, ze klicove
slovo AUTO_INCEMENT v MySQL je bohuzel ptalforme zavisle (myslim platformu
SQL stroje). Proto je trochu slozite napsat pomoci JDBC prenositelnou
aplikaci.

Rozhodl jsem se proto, ze pro pouziti MySQL a HSQLDB, ktere v aplikaci budu
resit, budou autoinkremetaci pouzivat. V pripade pouziti jine databaze, budu
pouzivat zamykani cele tabulky a casem se uvidi a pripadne to tam dopisu i
pro jiny SQL stroj. Doufam, ze JDBC 2.0 umi zamknout tabulku?

Myslim, ze je to idealni reseni ve smyslu: vlk se nazral  koza zustala
cela...

Nemate nekdo vyladenou jednoduchou aplikaci logiku (staci strucny popis),
ktera resi, kdyz se uzivatel rozhodne prestat pouzivat interni databazi
aplikace (v mem pripade HSQLDB) a prejde na externi SQL stroj. Myslim tim
problem synchronizace.

--
Kouba Tomas
mailto:tomas na neo.cz

> > SELECT MAX(nejake_ciselne_pole)+1 FROM moje_tabulka;
> > ...
> > INSERT INTO moje_tabulka SET nejake_hodnoty;
> > INSERT INTO jina_tabulka SET nejake_hodnoty;
> > UNLOCK TABLES;
> > Tim mam zarucene, ze behem zjistovani ID mi nikdo jiny do tablek nic
> > nezapise, ale muze cist. Takze pokud jiny thread chce nacist data pro
> > zobrazeni, nic u nebrani a pokud chce neco zapsat, tak proste
> ceka, dokud ja
> > neskoncim se zapisem a neUNLOCKnu.
>
> Prosim, nepouzivejte podobne postupy. Na podobne veci Vam databazovy
> system dava databazove a transakcne hlidanou vec, a tou je v pripade
> MySQL autoincrementovaci sloupec. Jedine u neho mate zajistenou
> rozumnou propustnost celeho systemu spolu s korektnim provedenim te
> veci.



Další informace o konferenci Databases