Sdílet prostřednictvím


Vytvoření primárních klíčů

platí pro: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL Database v Microsoft Fabric

Primární klíč můžete definovat v databázovém stroji SQL Serveru pomocí aplikace SQL Server Management Studio nebo jazyka Transact-SQL. Vytvoření primárního klíče automaticky vytvoří odpovídající jedinečný clusterovaný index. Primární klíč je ale možné zadat jako neclusterovaný index.

Ukázky kódu v tomto článku používají ukázkovou databázi AdventureWorks2022 nebo AdventureWorksDW2022, kterou si můžete stáhnout z domovské stránky ukázky a komunitní projekty Microsoft SQL Serveru.

Omezení

Tabulka může obsahovat pouze jedno omezení PRIMARY KEY.

Všechny sloupce definované v rámci omezení PRIMARY KEY musí být definovány jako NOT NULL. Pokud není zadána možnost null, všechny sloupce, které se účastní omezení PRIMARY KEY, mají nastavenou hodnotu nullability na NOT NULL.

Dovolení

Vytvoření nové tabulky s primárním klíčem vyžaduje oprávnění CREATE TABLE v databázi a ALTER oprávnění ke schématu, ve kterém se tabulka vytváří.

Vytvoření primárního klíče v existující tabulce vyžaduje ALTER oprávnění k tabulce.

Použití aplikace SQL Server Management Studio

  1. V Průzkumníku objektů klikněte pravým tlačítkem myši na tabulku, do které chcete přidat jedinečné omezení, a vyberte Návrh.
  2. V editoru tabulkyvyberte výběr řádku pro databázový sloupec, který chcete definovat jako primární klíč. Pokud chcete vybrat více sloupců, podržte stisknutou klávesu CTRL a vyberte selektory řádků pro ostatní sloupce.
  3. Klikněte pravým tlačítkem myši na volič řádku pro daný sloupec a vyberte Nastavit primární klíč.

Opatrnost

Pokud chcete předefinovat primární klíč, musí být před vytvořením nového primárního klíče odstraněny všechny relace s existujícím primárním klíčem. Zpráva vás upozorní, že existující relace se v rámci tohoto procesu automaticky odstraní.

Sloupec s primárním klíčem je v selektoru řádku identifikován symbolem tohoto klíče.

Pokud se primární klíč skládá z více než jednoho sloupce, jsou v jednom sloupci povoleny duplicitní hodnoty, ale každá kombinace hodnot ze všech sloupců primárního klíče musí být jedinečná.

Pokud definujete složený klíč, pořadí sloupců v primárním klíči odpovídá pořadí sloupců, jak je znázorněno v tabulce. Po vytvoření primárního klíče ale můžete změnit pořadí sloupců. Další informace naleznete v tématu Úprava primárních klíčů.

Použití Transact-SQL

Vytvoření primárního klíče v existující tabulce

Následující příklad vytvoří primární klíč ve sloupci TransactionID v databázi AdventureWorks2022.

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

Vytvoření primárního klíče v nové tabulce

Následující příklad vytvoří tabulku a definuje primární klíč ve sloupci TransactionID v databázi AdventureWorks2022.

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

Vytvoření neclusterovaného primárního klíče s odděleným clusterovaným indexem v nové tabulce

Následující příklad vytvoří tabulku v databázi AdventureWorks2022 s neclusterovaným primárním klíčem ve sloupci CustomerID. Potom přidá clusterovaný index do TransactionID.

  1. Vytvořte tabulku pro přidání clusterovaného indexu.

    CREATE TABLE [Production].[TransactionHistoryArchive1] (
        CustomerID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
        TransactionID INT IDENTITY(1, 1) NOT NULL,
        CONSTRAINT PK_TransactionHistoryArchive1_CustomerID PRIMARY KEY NONCLUSTERED (CustomerID)
    );
    
  2. Teď přidejte clusterovaný index.

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