Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Добавете колона с първичен ключ в SQL таблица

В SQL Server 2005 или по-нова версия можете да използвате този скрипт:

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

Разбира се, този скрипт все още може да се провали, ако други таблици препращат към този dbo.YourTable използване на ограничения на външен ключ върху вече съществуващия RowId колона...

Актуализация: иразбира се , навсякъде, където използвам dbo.YourTable или PK_YourTable , трябва да замените тези заместители с действителните имена на таблици/ограничения от вашата собствена база данни (не споменахте какви са те във вашия въпрос.....)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Репликацията на Sql сървър изисква действителното име на сървъра, за да се осъществи връзка със сървъра

  2. HttpWebRequest работи бавно за първи път в SQLCLR

  3. Как да завъртите неизвестен брой колони и без агрегат в SQL Server?

  4. Как да коригирате грешка Msg 7325 в SQL Server:„Обекти, излагащи колони с типове CLR, не са разрешени в разпределени заявки“

  5. Освободете място в базата данни на SQL Server 2005 при премахване на таблици за постоянно