Dela via


Skapa primära nycklar

gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Du kan definiera en primärnyckel i SQL Server Database Engine med hjälp av SQL Server Management Studio eller Transact-SQL. När du skapar en primärnyckel skapas automatiskt ett motsvarande unikt grupperat index. Primärnyckeln kan dock anges som ett icke-grupperat index i stället.

Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

Begränsningar

En tabell kan bara innehålla en PRIMARY KEY begränsning.

Alla kolumner som definieras under ett PRIMARY KEY-villkor måste definieras som NOT NULL. Om nullability inte har angetts har alla kolumner som deltar i en PRIMARY KEY-begränsning sin nullbarhet inställd på NOT NULL.

Behörigheter

För att skapa en ny tabell med en primärnyckel krävs CREATE TABLE behörighet i databasen och ALTER behörighet för schemat där tabellen skapas.

Att skapa en primärnyckel i en befintlig tabell kräver ALTER behörighet i tabellen.

Använda SQL Server Management Studio

  1. I Object Explorer högerklickar du på den tabell som du vill lägga till en unik begränsning till och väljer Design.
  2. I Table Designerväljer du radväljaren för den databaskolumn som du vill definiera som primärnyckel. Om du vill markera flera kolumner håller du ned CTRL-tangenten medan du väljer radväljarna för de andra kolumnerna.
  3. Högerklicka på radväljaren för kolumnen och välj Ange primärnyckel.

Försiktighet

Om du vill omdefiniera primärnyckeln måste alla relationer till den befintliga primärnyckeln tas bort innan den nya primärnyckeln kan skapas. Ett meddelande varnar dig om att befintliga relationer tas bort automatiskt som en del av den här processen.

En primärnyckelkolumn identifieras av en primärnyckelsymbol i dess radväljare.

Om en primärnyckel består av mer än en kolumn tillåts duplicerade värden i en kolumn, men varje kombination av värden från alla kolumner i primärnyckeln måste vara unik.

Om du definierar en sammansatt nyckel matchar ordningen på kolumnerna i primärnyckeln kolumnernas ordning enligt tabellen. Du kan dock ändra ordningen på kolumnerna när primärnyckeln har skapats. Mer information finns i Ändra primära nycklar.

Använd Transact-SQL

Skapa en primärnyckel i en befintlig tabell

I följande exempel skapas en primärnyckel i kolumnen TransactionID i AdventureWorks2022-databasen.

ALTER TABLE [Production].[TransactionHistoryArchive]
   ADD CONSTRAINT PK_TransactionHistoryArchive_TransactionID PRIMARY KEY CLUSTERED (TransactionID);

Skapa en primärnyckel i en ny tabell

I följande exempel skapas en tabell och en primärnyckel definieras i kolumnen TransactionID i AdventureWorks2022-databasen.

CREATE TABLE [Production].[TransactionHistoryArchive1] (
    TransactionID INT IDENTITY(1, 1) NOT NULL,
    CONSTRAINT PK_TransactionHistoryArchive1_TransactionID PRIMARY KEY CLUSTERED (TransactionID)
);

Skapa en icke-klustrad primärnyckel med separat klustrat index i en ny tabell

I följande exempel skapas en tabell i AdventureWorks2022-databasen med en icke-klustrad primärnyckel på kolumnen CustomerID. Sedan lägger det till ett klustrat index på TransactionID.

  1. Skapa en tabell för att lägga till det klustrade indexet.

    CREATE TABLE [Production].[TransactionHistoryArchive1] (
        CustomerID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
        TransactionID INT IDENTITY(1, 1) NOT NULL,
        CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
    );
    
  2. Lägg nu till det klustrade indexet.

    CREATE CLUSTERED INDEX CIX_TransactionID
    ON [Production].[TransactionHistoryArchive1] (TransactionID);