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

Tilføj primær nøglekolonne i SQL-tabel

I SQL Server 2005 eller nyere kan du bruge dette script:

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

Selvfølgelig kan dette script stadig mislykkes, hvis andre tabeller refererer til denne dbo.YourTable ved hjælp af fremmednøglebegrænsninger på den allerede eksisterende RowId kolonne...

Opdatering: og naturligvis , hvor som helst jeg bruger dbo.YourTable eller PK_YourTable , skal du erstatte disse pladsholdere med de faktiske tabel / begrænsningsnavne fra din egen database (du nævnte ikke, hvad de var, i dit spørgsmål.....)



  1. Hvordan redigeres lagret procedure i Oracle SQL Developer?

  2. Hvordan går man om en kolonne med forskellige værdier i samme række i sql?

  3. PHP Sortering af nærmeste koordinater

  4. Hvordan løser man MySQL-tegnkodningsproblem?