|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Problema con DB
Nella realizzazione di un sito web mi trovo di fronte a questo problema: devo prendere dal database (Oracle, in questo caso) il massimo di una chiave primaria di una tabella (che è generata tramite una sequence, per cui è un contatore), poi dal sito fatto in jsp (java) ricevere il valore e inserire nella tabella il numero aumentato di uno. Questo perchè ho bisogno del valore durante la sessione per effettuare inserimenti successivi. Quello che voglio evitare è che altro possa leggere il dato prima che l'inserimento successivo incrementi il valore... Voglio dire... uno prende il valore 5 (il massimo fra le chiavi), e prima che inserisca la riga nella tabella con il valore 6, arriva un altro e prende di nuovo 5... vorrei che le azioni di select e successivamente di insert fossero atomiche, o che solo una persona alla volta potesse eseguire queste due (o più, volendo) operazioni.
L'alternativa sarebbe lasciar gestire l'incremento del contatore al database, e però farsi "ritornare" il valore... ma questo credo che non sia possibile... Qualcuno mi può illuminare?! Grazie! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2004
Città: Lariano (RM)
Messaggi: 1372
|
Non ho ben capito come funziona il tutto, comunque, la tabella dove leggi il numero non è la stessa di dove lo vai a scrivere? Altrimenti si incrementerebbe da solo, non vedo perchè devi preoccupartene tu. Invece se la tabelle sono diverse ti conviene, prima di fare la INSERT per scrivere i dati, andarti a leggere il numero progressivo, lo incrementi di 1 e scrivi il tutto.
__________________
Careful With That Axe |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Sep 2001
Messaggi: 71
|
Grazie!
Pensavo servisse "solo" a soddisfare il principio "o si fa tutto, o niente", non che gestisse anche la concorrenza...
Mi suonava un po' strano pensare che semplicemente con un autocommit si risolvessero brillantemente (è ironico...) problemi che molti linguaggi di programmazione neppure affrontano e altri affrontano in maniera grossolana... Grazie mille! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:01.



















