sql >> Databasteknik >  >> RDS >> Sqlserver

Lägga till en identitet i en befintlig kolumn

Du kan inte ändra befintliga kolumner för identitet.

Du har två alternativ,

  1. Skapa en ny tabell med identitet och släpp den befintliga tabellen

  2. Skapa en ny kolumn med identitet och släpp den befintliga kolumnen

Tillvägagångssätt 1. (Ny tabell ) Här kan du behålla de befintliga datavärdena på den nyskapade identitetskolumnen. Observera att du kommer att förlora all data om "om inte existerar" inte är uppfyllt, så se till att du också släpper villkoret!

CREATE TABLE dbo.Tmp_Names
    (
      Id int NOT NULL
             IDENTITY(1, 1),
      Name varchar(50) NULL
    )
ON  [PRIMARY]
go

SET IDENTITY_INSERT dbo.Tmp_Names ON
go

IF EXISTS ( SELECT  *
            FROM    dbo.Names ) 
    INSERT  INTO dbo.Tmp_Names ( Id, Name )
            SELECT  Id,
                    Name
            FROM    dbo.Names TABLOCKX
go

SET IDENTITY_INSERT dbo.Tmp_Names OFF
go

DROP TABLE dbo.Names
go

Exec sp_rename 'Tmp_Names', 'Names'

Metod 2 (Ny kolumn ) Du kan inte behålla de befintliga datavärdena i den nyskapade identitetskolumnen. Identitetskolumnen kommer att innehålla nummersekvensen.

Alter Table Names
Add Id_new Int Identity(1, 1)
Go

Alter Table Names Drop Column ID
Go

Exec sp_rename 'Names.Id_new', 'ID', 'Column'

Se följande Microsoft SQL Server Forum-inlägg för mer information:

Hur man ändrar kolumn till identitet(1,1)



  1. Skiftlägeskänsliga variabler i SQL Server

  2. Varför börjar tabellnamn i SQL Server med dbo?

  3. Hur man kontrollerar MySQL-databas och tabellstorlekar

  4. Orsaker till MySQL-fel 2014 Kan inte köra frågor medan andra obuffrade frågor är aktiva