Vytvoření primárních klíčů
platí pro: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
SQL 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
- 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.
- 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.
- 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
.
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) );
Teď přidejte clusterovaný index.
CREATE CLUSTERED INDEX CIX_TransactionID ON [Production].[TransactionHistoryArchive1] (TransactionID);