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
Indicizzazione di una chiave primaria in SQL Server express 2005
martedì 01 aprile 2008 - 13.33
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 1 apr 2008 - 13:33
Salve,
ho da poco cominciato lo studio di sql server 2005 express.
Ho creato una tabella con campi e ho settato la chiave primaria con tipo di dato int, ho settato la colonna come identità e con incremento identità di 1!
Nel momento però in cui vado fisicamente a scrivere i dati all'interno della tabella la numerazione risulta per i fatti suoi.
In particolare mi si sono creati i seguenti indici:
2, 4, 6, 7, 9, 10, 13.
Per quale motivo??????
Come si fa per avere i dati incrementati di 1 ogni volta?
in più c'è un modo per "resettare gli indici"? e in che modo farlo?
Mille Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 1 apr 2008 - 13:47
>ho da poco cominciato lo studio di sql server 2005 express.
>Ho creato una tabella con campi e ho settato la chiave primaria
>con tipo di dato int, ho settato la colonna come identità e con
>incremento identità di 1!
>Nel momento però in cui vado fisicamente a scrivere i dati all'interno
>della tabella la numerazione risulta per i fatti suoi.
>In particolare mi si sono creati i seguenti indici:
>2, 4, 6, 7, 9, 10, 13.
>Per quale motivo??????
Ciao Marco,
un indice è una struttura dati (b-tree) che permette di velocizzare gli accessi. Punto.
Quei valori che riporti sono autogenerati da SQL Server dato che nella definizione della colonna hai specificato la prorprietà IDENTITY.
In questo modo non devi preoccuparti di valorizzare esplicitamente tale colonna ad ogni INSERT.
>Come si fa per avere i dati incrementati di 1 ogni volta?
Probabilmente hai definito 2 come fattore di incremento.
La proprietà IDENTITY accetta 2 parametri: un seme che definisce il valore di partenza ed un fattore di incremento che determina appunto l'incremento ad ogni INSERT.
Quindi per avere 1 come fattore di incremento devi eliminare la colonna e crearne una nuova impostando a 1 il fattore di incremento.
>in più c'è un modo per "resettare gli indici"? e in che modo
>farlo?
Attenzione GLI INDICI SONO UN'ALTRA COSA!
Per resettare il valore della colonna IDENTITY puoi svuotare la tabella con il comando TRUNCATE TABLE.
Se invece vuoi impostare un nuovo seme utilizza il comando DBCC CHECKIDENT.
Sui Books Online troverai tutti i dettagli.
>Mille Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 1 apr 2008 - 13:59
ah ok perfetto...
infine un ultima domanda... ho creato una piccola applicazione per la gestione di fatturazione con microsoft access e il numero di fattura me lo facevo stampare da un contatore numerico.
Ora per fare la stessa cosa con sql server tu come lo faresti?
Grazie mille... credo cmq di aver capito quello da te scritto sopra.
Ancora grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 1 apr 2008 - 14:02
>infine un ultima domanda... ho creato una piccola applicazione
>per la gestione di fatturazione con microsoft access e il numero
>di fattura me lo facevo stampare da un contatore numerico.
>Ora per fare la stessa cosa con sql server tu come lo faresti?
Boh, io lo genererei alla fine della transazione di INSERT.
>Grazie mille... credo cmq di aver capito quello da te scritto
>sopra.
Meno male
>Ancora grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
86Marco
Profilo
| Expert
889
messaggi | Data Invio:
mar 1 apr 2008 - 14:05
>Boh, io lo genererei alla fine della transazione di INSERT.
Si, ma come lo genereresti?
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 1 apr 2008 - 14:33
>>Boh, io lo genererei alla fine della transazione di INSERT.
>Si, ma come lo genereresti?
Ah boh, non ho in mano la tua analisi
Non mi occupo di fatturazione, quindi non ne ho idea
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
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 !