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

Tilføjelse af en identitet til en eksisterende kolonne

Du kan ikke ændre de eksisterende kolonner for identitet.

Du har 2 muligheder,

  1. Opret en ny tabel med identitet og slip den eksisterende tabel

  2. Opret en ny kolonne med identitet og slip den eksisterende kolonne

Fremgangsmåde 1. (Ny tabel ) Her kan du beholde de eksisterende dataværdier på den nyoprettede identitetskolonne. Bemærk, at du vil miste alle data, hvis 'hvis ikke eksisterer' ikke er opfyldt, så sørg for at sætte betingelsen på drop også!

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'

Fremgangsmåde 2 (Ny kolonne ) Du kan ikke beholde de eksisterende dataværdier på den nyoprettede identitetskolonne. Identitetskolonnen vil indeholde 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ølgende Microsoft SQL Server Forum-indlæg for flere detaljer:

Sådan ændres kolonne til identitet(1,1)



  1. Sådan sammenkædes strenge i SQL Server med CONCAT()

  2. Lignende UTF-8-strenge til autofuldførelsesfelt

  3. Gruppér efter kolonne og flere rækker i en række flere kolonner

  4. Kan vi forbinde ekstern MySQL-database i Android ved hjælp af JDBC?