2014-05-07 3 views
7

Ho creato una tabella in SQL Server 2012 con la chiave primaria come incremento automatico. Ma come posso rimuovere quella proprietà di incremento automatico dalla tabella utilizzando una query SQL?Come rimuovere l'incremento automatico dalla tabella in sql server 2012

+0

http://stackoverflow.com/questions/8834433/ remove-auto-increment-by-script-sql-server – slavoo

+0

Rilascia il vincolo PK, rilascia la colonna: non è possibile rimuovere semplicemente la specifica 'IDENTITY' da una colonna esistente .... –

+0

http://stackoverflow.com/questions/8230257/sql-server-remove-identity-from-a-column-in-a-table – MarkD

risposta

7

Il modo più semplice sarebbe:

  1. Aprire SQL Server Management Studio.
  2. Individuare Server> Base dati> Tabella.
  3. Fare clic con il tasto destro sulla tabella> selezionare il disegno.
  4. Nella finestra di progettazione, evidenziare la colonna che si desidera modificare.
  5. Nella finestra Column Properties passare a Identity Specification>Is Identity E impostare su No.
  6. Vai al menu della barra degli strumenti>Table Designer> Seleziona Generate Change Script...
  7. Walla, hai lo script richiesto.

Mi piace usare questo metodo per ottenere gli script, in quanto mi permette di generare script non sono sicuro di come comporre da zero e quindi l'apprendimento e migliorare le mie capacità ...

enter image description here

+0

@Downvoters Ti dispiacerebbe spiegare il downvote? –

+0

La migliore risposta. buon modo per generare varietà di script. tnx – hamid

+0

Viene visualizzato "Salvataggio delle modifiche non consentito ..." – Savage

8

Se è necessario conservare i dati in quella colonna, creare una nuova colonna sulla tabella che è dello stesso tipo (ma con un nome diverso), copiare i dati dalla colonna che si desidera eliminare in quella nuova, rilasciare la vecchia colonna e rinominare il nuovo. Esempio completo:

CREATE TABLE test(col1 INT IDENTITY (1,1) NOT NULL, col2 VARCHAR(10) NULL); 

ALTER TABLE test ADD col3 INT NULL; 

UPDATE test SET col3 = col1; 

ALTER TABLE test DROP COLUMN col1; 

EXEC sp_rename 'dbo.test.col3', 'col1', 'COLUMN'; 
4

Se si tratta di una colonna chiave primaria, è necessario prima rilasciare il PK. Se ci sono delle tabelle che fanno riferimento a questo, allora dovrai rilasciare questi FK per poter rilasciare il PK. Dopo di ciò, aggiungi un'altra colonna dello stesso tipo, aggiornala con i valori della colonna Identity, rilascia la colonna Identity, rinomina la nuova colonna a qualunque sia il nome della colonna Identity (con la procedura sp_rename), ricrea il PK, ricrea gli FK, controlla se tutto è andato bene.

Sarei molto attento a farlo su un database di produzione. Assicurati che nessuno possa accedere ai dati mentre stai facendo questo.

-1

SET_IDENTITY_INSERT [TABLE] OFF .. questo permette di rimuovere l'incremento automatico a stato off .., in modo da avere per inserire il valore in thatcolumn

+1

No, non significa che non è possibile inserire direttamente nella colonna. è necessario impostare 'IDENTITY_INSERT' su' ON' per sovrascrivere il numero automatico. Oltre a ciò, questa non è davvero una soluzione adeguata perché non ha rimosso le specifiche di identità della colonna e potrebbe essere attivata in futuro con conseguenze potenzialmente indesiderate o addirittura pericolose. –

+0

Questa è una soluzione alternativa, non una soluzione – Savage