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
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Sl server id autoincrement
sabato 06 febbraio 2016 - 10.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
trinity
Profilo
| Guru
3.465
messaggi | Data Invio:
sab 6 feb 2016 - 10:48
Salve buongiorno
è possibile in una tabella con colonna id autoincrement di riorganizzare il contatore lasciando i dati nel db?
Mi spiego ho dovuto eliminare moltissimi record ed ora se vado ad inserire dei nuovi record il contatore parte giustamente dall'ultimo valore inserito io vorrei lasciando i dati in archivio di poter riorganizzare il contatore e farlo partire dal numero reale di record che la tabella contiene. Si può fare?
Se no cosa mi consigliate di fare?
Grazie
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com
Amodio
Profilo
| Expert
525
messaggi | Data Invio:
lun 8 feb 2016 - 15:04
non vedo il problema, pure se il contatore arriva a 50000 tanto se lo gestisce lui e il tuo programma,
giusto nel caso
dovresti cambiare il contatore in un semplice int
poi cambiarli tutti con una UPDATE potresti rinumerarle con una ROW_NUMBER()
il problema è poi vedere se accetta di riconvertire il campo in auto_number, ma puoi fare una prova in una tabella nuova e vedere
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 16 feb 2016 - 17:05
>Salve buongiorno
ciao
>è possibile in una tabella con colonna id autoincrement di riorganizzare il contatore lasciando i dati nel db?
>Mi spiego ho dovuto eliminare moltissimi record ed ora se vado
>ad inserire dei nuovi record il contatore parte giustamente dall'ultimo
>valore inserito io vorrei lasciando i dati in archivio di poter
>riorganizzare il contatore e farlo partire dal numero reale di
>record che la tabella contiene. Si può fare?
no, non puoi, ma l'identità non nasce per dare sequenza, ma per generare valori sempre incrementanti, e quindi univoci.
Per questo l'identità non dovrebbe mai essere esposta all'esterno, perchè è un campo AD USO INTERNO.
Se ti serve una numerazione progressiva tecnica sempre seguente, o utilizzi SQL Server 2012 e le sue SEQUENCES oppure applichi delle espressioni in inserimento.
Ci sono dei trick, come la simulazione dell'identità, ovvero creare una tabella che contiene il progressivo massimo inserito, e poi, ad ogni insert, fai il +1 di quel valore.
In questo modo la soluzione scala.
Soluzioni più semplici sono applicare la MAX(tuo_id) + 1, ma all'aumentare dei record hai sempre più peso nella query che ricava il valore massimo.
Se è perchè esponi quel campo e ti serve la serie, dovrai cambiare approccio, se invece si tratta di "stile" perchè ti danno fastidio i buchi, credo tu te ne debba fare una ragione.
Per evitare di non utilizzare tutto il tipo di dato, inoltre, puoi pensare di non partire da zero la prossima volta, per sfruttare al massimo l'estensione del tipo di dato dell'identità.
>Grazie
di nulla!
Alessandro Alpi | MS Data Platform MVP | Engage IT Services s.r.l.
MCP|MCITP|MCTS|MCT
http://www.engageitservices.it
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
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 !