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