Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come modificare a livello di codice la colonna non identità in identità uno?

Per quanto ne so, devi creare una tabella temporanea con il campo ID creato come IDENTITÀ, quindi copiare tutti i dati dalla tabella originale. Infine, rilasci la tabella originale e rinomini quella temporanea. Questo è un esempio con una tabella (denominata TestTable ) che contiene un solo campo, chiamato ID (intero, non IDENTITY):

BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_TestTable
    (
    ID int NOT NULL IDENTITY (1, 1)
    )  ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable ON
GO
IF EXISTS(SELECT * FROM dbo.TestTable)
     EXEC('INSERT INTO dbo.Tmp_TestTable (ID)
        SELECT ID FROM dbo.TestTable WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT dbo.Tmp_TestTable OFF
GO
DROP TABLE dbo.TestTable
GO
EXECUTE sp_rename N'dbo.Tmp_TestTable', N'TestTable', 'OBJECT' 
GO
COMMIT