sql >> Database >  >> RDS >> Sqlserver

Voeg een primaire sleutelkolom toe aan de SQL-tabel

In SQL Server 2005 of nieuwer kunt u dit script gebruiken:

-- 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

Dit script kan natuurlijk nog steeds mislukken als andere tabellen verwijzen naar deze dbo.YourTable het gebruik van externe sleutelbeperkingen op de reeds bestaande RowId kolom...

Bijwerken: en natuurlijk , overal waar ik dbo.YourTable gebruik of PK_YourTable , moet u die tijdelijke aanduiding vervangen door de werkelijke tabel / constraint-namen uit uw eigen database (u hebt niet vermeld wat ze waren, in uw vraag.....)



  1. Best practice van bulk_create voor enorme records

  2. Aan de slag met Oracle Application Express-APEX

  3. Hoe zoekmachines databasegestuurde inhoud laten indexeren?

  4. 7 manieren waarop Microsoft Access uw bedrijf kan helpen