Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dodaj kolumnę klucza podstawowego w tabeli SQL

W SQL Server 2005 lub nowszym możesz użyć tego skryptu:

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

Oczywiście ten skrypt może się nie powieść, jeśli inne tabele odwołują się do tego dbo.YourTable używanie ograniczeń klucza obcego na istniejącym RowId kolumna...

Aktualizacja: i oczywiście , gdziekolwiek używam dbo.YourTable lub PK_YourTable , musisz zastąpić te symbole zastępcze rzeczywistym nazwy tabel/ograniczeń z Twojej własnej bazy danych (w swoim pytaniu nie wspomniałeś, jakie one były.....)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmienić Sql-Server (express) z nazwanego wystąpienia na localhost?

  2. Jak mogę edytować wartości INSERT w wyzwalaczu na SQL Server?

  3. Zapisywanie zmian po edycji tabeli w SQL Server Management Studio

  4. e-mail bazy danych z załącznikiem (plik Excel / plik pdf)?

  5. Microsoft SQL Server 2005/2008:XML a typ danych tekst/varchar