37 messaggi dal 24 aprile 2007
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
la mia domanda è la seguente, che succede se due utenti ordinano, A e B il primo orine spedizione 10 il secondo ordine 11.

la spedizione 10 viene eliminata ma solo dopo che la 11 è stata evasa

ti trovi sul db 9 11... e non puoi certo riassegnare 10 alla spedizione che aveva 11.

le soluzioni possono essere molte, la prima: crei una colonna ID autoincrementale e la imposti come chiave primaria, è bene che internamente ogni spedizione abbia sempre un riferimenrto univoco.

il Numero di spedizione puoi calcolarlo a ogni inseriemento ed eliminazione con un trigger.

ma il problema rimane io non faremi mai affidamento su un numero del genere.

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Ciao,

la cancellazione dei dati intermedi è un problema che devi risolvere a livello di logica funzionale della tua applicazione, per capire se devi "scalare" tutti i numeri ordine o se magari devi impedire la cancellazione nel caso esistano ordini successivi.

Per quanto riguarda il numbering, visto che l'identity non fa al caso tuo, fossi in te utilizzerei una tabella a parte con una sola riga per tener traccia del valore attuale del tuo progressivo; pertanto l'inserimento di un nuovo ordine legge questo numero, lo aggiorna aggiungendo uno e poi lo utilizza nella riga ordina. Il tutto magari dentro una bella transazione di livello serializable per evitare problemi di concorrenza.

Ah, ovviamente il numero ordine potrà essere visualizzato solo *dopo* il salvataggio.

A presto,
m.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.