2009-06-26 15 views
24

Ho una tabella con una colonna di incremento automatico forzato e questa colonna è un ID molto prezioso che viene conservato attraverso l'intera app. Mi dispiace dire che è stato scarso sviluppo da parte mia per avere questa colonna di incremento automatico.SQL: Come inserire una riga senza incrementare automaticamente una colonna ID?

Quindi, ecco il problema. Devo inserire in questa tabella un ID per la colonna che è già stata creata e rimossa dalla tabella. Un po 'come resuscitare questo ID e rimetterlo nel tavolo.

Quindi, come posso farlo a livello di codice senza spegnere l'incremento della colonna. Correggetemi se ho torto, se lo spengo programmaticamente, riavvierà a 0 o 1 e non voglio che ciò accada ...

+0

Quali RDBMS stai utilizzando? – Quassnoi

+0

Server MS-SQL per questa domanda ... –

risposta

58

Se sei in Microsoft SQL Server, puoi "spegnere" "la caratteristica autoincrementing emettendo la dichiarazione Set Identity_Insert [TableName] On, come in:

Set Identity_Insert [TableName] On 
    -- -------------------------------------------- 
    Insert TableName (pkCol, [OtherColumns]) 
    Values(pkValue, [OtherValues]) 
    -- ---- Don't forget to turn it back off ------ 
    Set Identity_Insert [TableName] Off 
+0

Grazie, @jvanderh, ho modificato per chiarire –

+0

marc_s ha ragione ... lo hai indietro – jvanderh

+0

Mantiene l'ultimo numero per l'identità incrementata? Non voglio reimpostare l'intera colonna Identity da solo ... –

7

Oltre alla risposta Charles' (che ora è corretta al 100% :-) e che conserva il valore corrente della identità sul tavolo), potresti anche voler controllare il valore corrente di un IDENTITÀ su un tavolo - puoi farlo con questo comando qui:

DBCC CHECKIDENT('YourTableName') 

Se hai bisogno di realtà cambiamento esso, è possibile farlo utilizzando questo comando qui:

DBCC CHECKIDENT ('YourTableName', RESEED, (new value for IDENTITY)) 
3

In realtà, il codice qui sopra per INDENTITY_INSERT è corretta - trasformandolo dice sul server che si desidera inserisci tu stesso i valori. Ti consente di inserire valori in una colonna IDENTITY. Quindi, dopo aver terminato, si desidera disattivarlo (consentendo al server di generare e inserire i valori).

Problemi correlati