Inserimento di righe in tabella sql

di il
1 risposte

Inserimento di righe in tabella sql

Salve
ho un problema con l'inserimento in automatico in una colonna.

Ho una tabella con Campi :

NOME||COGNOME|| ANNI || NUMERO


avrei bisogno che effettuando l'inserimento in tabella
di più righe in campo Numero si incrementa in automatico (1,2,3,4,5, etc..)
ed se ho fatto già un inserimento in tabella ed ho il campo Numero come max 5
al successivo inserimento mi deve incrementare con 6.7.8.9.etc...

Saluti

1 Risposte

  • Re: Inserimento di righe in tabella sql

    Salve koko,
    questa tipologia di attivita' solitamente si esplicita utilizzando una funzionalita' gia' presente nelle features di SQL Server, e si utilizza quindi la proprieta' IDENTITY applicata alla colonna desiderata ( https://docs.microsoft.com/it-it/sql/t-sql/statements/create-table-transact-sql-identity-property?view=sql-server-ver15 ). Cio' fa si' che, ad ogni inserimento, la numerazione venga generata dal dbms in automatico.
    Tale proprieta' permette' duplicati e il dominio va protetto con un'apposito constraint di univocita', sia esso un indice o un vincolo, come meglio desiderato.
    Leggi per favore bene pero' la parte relativa agli "avvertimenti", che ti avverte della peculiarita' di come SQL Server gestisce pero' questa funzionalita'... il motore alloca dei "blocchi" di valorizzazione, e questo puo' produrre dei "buchi" nella eventuale sequenza, per questo motivo infatti non e' consigliato utilizzare questa funzionalita' per "serie" complete che NON devono presentare "buchi" nella sequenza... tipicamente questa funzionalita' viene utilizzata come alternate key, quindi una "chiave surrogata" che tendenzialmente non si preoccupa di "buchi" nella sequenza ma che debba solo garantire (con la protezione di un vincolo di univocita') il riferimento univoco ad una riga specifica della tabella. Quindi NON andrebbe usata ad esempio per una tabella "fatture" per identificare la singola fattura dalla sua numerazione o cose simili...

    se la sequenzialita' senza "buchi" e' invece una specifica richiesta e non violabile, allora e' necessario utilizzare altri approcci, e vedi ad esempio sempre in questa sede il topic https://www.iprogrammatori.it/forum-programmazione/progettazione-database/query-per-trovare-primo-numero-libero-t41698.html, che pero' presenta delle argomentazioni sfavorevoli sia "logiche" che "fisiologiche" (dal punto di vista delle eventuali risorse impegnate per l'ottenimento)... Interessante anche una soluzione, che proprio recentemente ho visto, basata sul tipo di dato GEOMETRY e che ne sfrutta le sue peculiarita' matematiche e funzionali, vedi https://www.sqlservercentral.com/articles/collections-computed-gaps-for-continuous-numbers

    salutoni
    --
    Andrea
Devi accedere o registrarti per scrivere nel forum
1 risposte