Togliere Identity da colonna

mercoledì 30 maggio 2007 - 11.21

gaemon78 Profilo | Newbie

Ciao a tutti, io devo ricalcolare i valori di una colonna e devono essere progressivi (tipo identity) ma la colonna NON è IDENTITY.
esempio:
Io ho 1,3,8,9,10,12
e devo ottenere 1,2,3,4,5,6

Il modo più veloce (da Query Analyzer) mi sembrava quello di fare una drop della colonna, reinserirla di tipo IDENTITY e poi togliere l'attributo IDENTITY dalla colonna creata.

Ho 2 problemi
1) Quando faccio la ADD della colonna me la aggiunge sempre in fondo a tutte le altre e io la voglio per prima
(Ho visto che esiste un'opzione FIRST ma non riesco ad utilizzarla
ALTER TABLE NomeTabella
ADD CdNumero INT IDENTITY FIRST
mi da errore di sintassi
)
2) Non so come togliere l'IDENTITY dalla colonna creata
(Con la ALTER TABLE NomeTabella ALTER COLUMN CdNumero INT
Il campo rimane IDENTITY comunque)

Ringrazio chiunque mi possa aiutare

lbenaglia Profilo | Guru

>Ho 2 problemi
>1) Quando faccio la ADD della colonna me la aggiunge sempre in
>fondo a tutte le altre e io la voglio per prima
>(Ho visto che esiste un'opzione FIRST ma non riesco ad utilizzarla
>ALTER TABLE NomeTabella
>ADD CdNumero INT IDENTITY FIRST
>mi da errore di sintassi
>)

Ciao gaemon78,

Questo è un "non problema" dato che in un RDBMS la posizione delle colonne è ininfluente.
Per quanto riguarda l'opzione FIRST non esiste.

"ALTER TABLE (Transact-SQL)"
http://msdn2.microsoft.com/en-us/library/ms190273.aspx

>2) Non so come togliere l'IDENTITY dalla colonna creata
>(Con la ALTER TABLE NomeTabella ALTER COLUMN CdNumero INT
>Il campo rimane IDENTITY comunque)
Semplice, non puoi.
Prova a definire una nuova Trace con il SQL Profiler, apri Enterprise Manager e modifica la proprietà IDENTITY di una tabella.
Noterai che dietro le quinte EM crea una tabella Tmp_NomeTabella con la nuova impostazione della proprietà, vi copia tutte le righe dalla tabella originale, rimuove la tabella originale ed infine rinomina la tabella Tmp_NomeTabella in NomeTabella mediante la stored procedure di sistema sp_rename.

>Ringrazio chiunque mi possa aiutare
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

gaemon78 Profilo | Newbie

Si so che l'ordine è indifferente ma la tabella non è mia ma di un altro utente del DB e volevo lasciarla come la trovo.
Per quanto riguarda l'identity cercherò un'altra soluzione.

Grazie mille.
Ciao

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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5