sql >> Databasteknik >  >> RDS >> Sqlserver

Lägg till primärnyckelkolumn i SQL-tabellen

I SQL Server 2005 eller senare kan du använda det här skriptet:

-- drop PK constraint if it exists
IF EXISTS (SELECT * FROM sys.key_constraints WHERE type = 'PK' AND parent_object_id = OBJECT_ID('dbo.YourTable') AND Name = 'PK_YourTable')
   ALTER TABLE dbo.YourTable
   DROP CONSTRAINT PK_YourTable
GO

-- drop column if it already exists
IF EXISTS (SELECT * FROM sys.columns WHERE Name = 'RowId' AND object_id = OBJECT_ID('dbo.YourTable'))
    ALTER TABLE dbo.YourTable DROP COLUMN RowId
GO

-- add new "RowId" column, make it IDENTITY (= auto-incrementing)
ALTER TABLE dbo.YourTable 
ADD RowId INT IDENTITY(1,1)
GO

-- add new primary key constraint on new column   
ALTER TABLE dbo.YourTable 
ADD CONSTRAINT PK_YourTable
PRIMARY KEY CLUSTERED (RowId)
GO

Naturligtvis kan det här skriptet fortfarande misslyckas om andra tabeller hänvisar till denna dbo.YourTable använder främmande nyckelbegränsningar på den redan existerande RowId kolumn...

Uppdatering: och naturligtvis , var som helst jag använder dbo.YourTable eller PK_YourTable måste du ersätta dessa platshållare med den faktiska tabell-/begränsningsnamn från din egen databas (du nämnde inte vad de var i din fråga.....)



  1. SQL Server String eller binära data skulle trunkeras

  2. Hql, Hur skriver man join-fråga mellan tabeller som har en till många-relation?

  3. Att anropa en procedur i en funktion ger MySQL ERROR 1422

  4. kan inte skriva data i stor storlek med UTL_FILE.PUT_LINE