Co je omezení primárního klíče:
Omezení primárního klíče je vytvořeno pro zajištění jedinečnosti záznamů/řádků. Omezení primárního klíče lze vytvořit pro jeden nebo sadu sloupců, pokud sloupec/sloupce neumožňují hodnoty Null.1) Omezení primárního klíče vytváří ve výchozím nastavení seskupený index, pokud ještě neexistuje Řekněme, že vytváříte novou tabulku a přidali jste sloupec s primárním klíčem, vytvoří se shlukovaný index.
V níže uvedeném příkladu vytváříme tabulku dbo.Customer a jako omezení primárního klíče jsme přidali CustomerId. Podívejme se, jaký typ indexu je vytvořen.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) )
Můžeme se dotazovat na systémový pohled sys.indexes a získat informace o indexu
SELECT * FROM sys.indexes WHERE object_name(object_id) = 'Customer'
Jak můžete vidět, že Clustered index je vytvořen, protože v této tabulce předtím nebyl žádný index clusteru. Všimli jsme si názvu pro Clustered Index, je generován SQL Serverem. Vždy je dobré uvést správný název pro indexy podle konvence pojmenování/standardů, které vaše společnost používá.
2) Pokud je klastrovaný index již vytvořen ve sloupci, primární Klíč se chystá vytvořit jedinečný index Pokud je klastrovaný index již ve sloupci/sloupcích v tabulce přítomen a my se pokusíme vytvořit primární klíč, vytvoří se Unique Non-clustered.
Pojďme vypustit a znovu vytvořit tabulku dbo.Customer. Protože nemůžeme vytvořit seskupený index pro sloupce, které přijímají hodnoty Null, musíme definovat naše Columns Not Null.
USE YourDatabaseName GO Drop table dbo.Customer GO CREATE TABLE dbo.Customer ( Customerid INT Not Null ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) Not Null ) --Create Clustered Index on SSN Column CREATE CLUSTERED INDEX IX_Customer_SSN ON dbo.Customer (SSN); --Create Primary Key on CustomerID Alter Table dbo.Customer Add Constraint Pk_Customer_CustomerId Primary Key(CustomerId)
Podívejme se, jaký typ indexů se vytváří pomocí systémového zobrazení sys.indexes. Měl by existovat jeden seskupený index, jak jsme vytvořili na SSN, a měl by existovat jeden jedinečný neshlukovaný, který by měl být vytvořen omezením primárního klíče.
Co je omezení primárního klíče v SQL Server – SQL Server / Výukový program TSQL
Video ukázka:Co je omezení primárního klíče v SQL Server a jak vytvořit primární klíč