sql >> Database >  >> RDS >> Sqlserver

Een identiteit toevoegen aan een bestaande kolom

U kunt de bestaande kolommen voor identiteit niet wijzigen.

Je hebt 2 opties,

  1. Maak een nieuwe tabel met identiteit en verwijder de bestaande tabel

  2. Maak een nieuwe kolom met identiteit en laat de bestaande kolom vallen

Benadering 1. (Nieuwe tabel ) Hier kunt u de bestaande gegevenswaarden in de nieuw gemaakte identiteitskolom behouden. Houd er rekening mee dat u alle gegevens verliest als niet wordt voldaan aan 'indien niet bestaat', dus zorg ervoor dat u de voorwaarde ook op de drop zet!

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'

Benadering 2 (Nieuwe kolom ) U kunt de bestaande gegevenswaarden in de nieuw gemaakte identiteitskolom niet behouden. De identiteitskolom bevat de nummerreeks.

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'

Zie het volgende Microsoft SQL Server-forumbericht voor meer details:

Kolom wijzigen in identiteit(1,1)



  1. Hoe kan ik de querycache van SQL Server wissen?

  2. Waarde van weergave-item invullen bij query in Oracle Forms

  3. Waarom retourneert IS NIET NULL NULL-waarden voor een Varchar (max) in SQL Server?

  4. Union en order by clausule gebruiken in mysql