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
risposta
Il modo più semplice sarebbe:
- Aprire
SQL Server Management Studio
. - Individuare Server> Base dati> Tabella.
- Fare clic con il tasto destro sulla tabella> selezionare il disegno.
- Nella finestra di progettazione, evidenziare la colonna che si desidera modificare.
- Nella finestra
Column Properties
passare aIdentity Specification
>Is Identity
E impostare suNo
. - Vai al menu della barra degli strumenti>
Table Designer
> SelezionaGenerate Change Script...
- 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à ...
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';
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.
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
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. –
Questa è una soluzione alternativa, non una soluzione – Savage
http://stackoverflow.com/questions/8834433/ remove-auto-increment-by-script-sql-server – slavoo
Rilascia il vincolo PK, rilascia la colonna: non è possibile rimuovere semplicemente la specifica 'IDENTITY' da una colonna esistente .... –
http://stackoverflow.com/questions/8230257/sql-server-remove-identity-from-a-column-in-a-table – MarkD