47 messaggi dal 09 luglio 2007
Ciao,
Ho una tabella per gestire delle spedizioni composta da un id (identity), un campo anno e un campo numero (più altri campi...)
L'id è la chiave primaria e anno e numero non possono essere null.
Vorrei fare in modo che il numero della spedizioni aumenti sequenzialmente (se ci sono buchi non fa niente) all'interno di uno stesso anno e riparta con il cambio dell'anno.
Ho pensato a questo algoritmo:
1) Estrarre il max(id) dell'anno precedente a quello della spedizione che sto per inserire;
2) Inserire la spedizione con numero = id appena inserito - id estratto prima.

Il problema è come faccio ad ottenere l'id che andrò ad inserire prima che faccia l'inserimento?? E' possibile??

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)
194 messaggi dal 13 dicembre 2005
Anche se riesci a tirare fuori l'id dell'anno avrai un problema di chiave in quanto sia ID che ANNO devono essere chiavi.

Per quanto riguarda l'estrazione nella VALUE dell'INSERT puoi mettere una SELECT che ti estrae l'ultimo ID
53 messaggi dal 02 gennaio 2007
da quanto posso leggere a te non interessa integrità referenziale quindi puoi :

togliere la chiave primaria al Id e creare una store procedure giornaliera che che cancelli gli eventuali doppioni.

oppure creare una tabella di appoggio su cui inserisci i dati aggiungere alla ttabella originale un campo che sia la concatenazione dell'id + anno come chiave primaria e in cui i valori saranno inseriti da un insert dalla tabella di appoggio .

tutto sta a vedere se sono dati sensibili le chiavi principalmente servono a mantenere l'integrittà della struttura della tabella
47 messaggi dal 09 luglio 2007
Ho risolto con un trigger after insert... Quando torno a lavoro lo posto...

Ciao,
N@poleone
"Le battaglie si vincono con gli uomini che si hanno, non con quelli che si vorrebbero" (Napoleone Bonaparte)

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.