Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Come creare id progressivo univoco senza utilizzare l' id contatore au...
mercoledì 12 novembre 2008 - 22.02
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
roddik1980
Profilo
| Junior Member
92
messaggi | Data Invio:
mer 12 nov 2008 - 22:02
Ciao a tutti,
ho una applicazione creata con ASP.net 2.0 alla quale molti utenti della mia organizzazione accedono "CONTEMPORANEAMENTE" per inserire le spedizioni che realizziamo con diversi vettori.
Il database l' ho creato con MS SQL Server 2005.
Ogno volta che un utente inserisce una nuova spedizione nella tabella del db si deve generare anche un NUMERO DI SPEDIZIONE che deve essere univoco e progressivo, va bene un numero......
Alla fine dell' inserimento l' utente che l' ha inserito deve ricevere un messaggio sotto forma di report / pagina web ecc. col dettaglio della spedizione appena inserita e il relativo NUMERO DI SPEDIZIONE univoco e progressivo appena creato.
Come posso fare ?
Se uso l' autoincrement di MS SQL Server 2005 e un utente genera e poi cancella la spedizione viene saltato un numero progressivo ! Non voglio questo, voglio che da 1 ad infinito i NUMERI DI SPEDIZIONE progressivi facciano sempre riferimento ad una spedizione esistente.
Mi date dei consigli e degli esempi pratici, per favore ?!
Grazie
Mark
rossimarko
Profilo
| Guru
1.173
messaggi | Data Invio:
gio 13 nov 2008 - 09:34
Ciao,
puoi sempre salvarti su database un campo NumeroSpedizione e ogni volta che crei un nuovo record vai a calcolare il valore da inserire facendo una MAX(NumeroSpedizione) + 1.
Io ti consiglio di tenere l'autoincrementante come chiave identificativa del record, mentre il numero di spedizione diventa un attributo. Così se per caso un domani dovesse cambiare la logica (ad esempio si deve riazzerare nell'anno) non devi stravolgere il tutto
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
roddik1980
Profilo
| Junior Member
92
messaggi | Data Invio:
gio 13 nov 2008 - 09:57
Ok, grazie.
1) Già valutatata la soluzione "MAX(NumeroSpedizione) + 1" la quale però decade e non è sicura al 100% se accedono contemporaneamente + utenti !
2) Credo a questo punto sia più corretto e sicuro tenere l' autoincrementale come dici tu.
Ora però ho il seguente problema, come faccio a farmi restituire l' id appena creato (autoincrement) dall' utente subito dopo l' INSERT della spedizione ?
Come si recupera ?
Grazie e buona giornata.
Mark
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 13 nov 2008 - 10:28
>Ciao a tutti,
Ciao, scusate se intervengo..
>Ogno volta che un utente inserisce una nuova spedizione nella
>tabella del db si deve generare anche un NUMERO DI SPEDIZIONE
>che deve essere univoco e progressivo, va bene un numero......
>Come posso fare ?
Innanzitutto, quoto rossimarko perchè l'identity come chiave è utilissima nel tuo caso.
Per Il numero di spedizione invece potresti pensare di simulare la tecnica usata per creare gli identity di sql server.
Ad ogni inserimento, potresti salvarti già il prossimo numero di spedizione su una ulteriore tabella.
Poi, tutte le volte che vai ad aggiungere record, vai a leggere il numero precedentemente salvato, facendo attenzione a non dare accesso ad altri utenti fino a che l'insert finale non è committata. Solo allora, aggiorni il campo nella tabellina di appoggio (+1) e lasci il via libera.
Ora, questo ha un rovescio della medaglia. Poichè ogni utente ha alla fine un accesso esclusivo e solo quando esso ha terminato l'inserimento viene rilasciata la risorsa..
Se non hai un traffico veramente imponente, puoi farlo senza problemi..
Intanto che ci sono, ti rispondo anche alla seconda domanda:
SCOPE_IDENTITY
http://technet.microsoft.com/it-it/library/ms190315.aspx
>Grazie
Di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !