sql >> Databasteknik >  >> RDS >> Sqlserver

Hur ändrar man programmatiskt icke-identitetskolumn till identitet ett?

Så vitt jag vet måste du skapa en temporär tabell med ID-fältet skapat som IDENTITY, sedan kopiera all data från den ursprungliga tabellen. Slutligen släpper du den ursprungliga tabellen och byter namn på den tillfälliga. Detta är ett exempel med en tabell (som heter Testtabell ) som bara innehåller ett fält, kallat ID (heltal, icke 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


  1. Skapa multidimensionell kapslad array från MySQL-resultat med dubbletter av värden (PHP)

  2. Kan jag konfigurera Aurora DB max identifierarlängd? Hur?

  3. MYSQL hur man beräknar summan av en kolumn inom ett datumintervall

  4. Returnera endast en rad från tabellen längst till höger för varje rad i tabellen längst till vänster