Co to jest podstawowe ograniczenie klucza:
Ograniczenie klucza podstawowego jest tworzone w celu zapewnienia niepowtarzalności rekordów/wierszy. Ograniczenie klucza podstawowego można utworzyć na pojedynczej kolumnie lub zestawie kolumn, o ile kolumna/kolumny nie zezwalają na wartości Null.1) Ograniczenie klucza podstawowego domyślnie tworzy indeks klastrowy, jeśli jeszcze nie istnieje Załóżmy, że tworzysz nową tabelę i dodałeś kolumnę z kluczem podstawowym, będzie ona tworzyć indeks klastrowy.
W poniższym przykładzie tworzymy tabelę dbo.Klient i dodaliśmy Identyfikator klienta jako ograniczenie klucza podstawowego. Sprawdźmy jaki typ indeksu jest tworzony.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) )
Możemy wysłać zapytanie do widoku systemowego sys.indexes, aby uzyskać informacje o indeksie
SELECT * FROM sys.indexes WHERE object_name(object_id) = 'Customer'
Jak widać, indeks klastrowy jest tworzony, ponieważ wcześniej nie było indeksu klastrowego w tej tabeli. Zauważyliśmy nazwę indeksu klastrowego, jest on generowany przez SQL Server. Zawsze dobrze jest podać właściwą nazwę indeksom zgodnie z konwencją nazewnictwa/standardami, których używa Twoja firma.
2) Jeśli indeks klastrowany jest już utworzony w kolumnie Kolumna, Podstawowa Kluczem jest utworzenie unikalnego indeksu Jeśli indeks klastrowany jest już obecny w kolumnie/kolumnach w tabeli i spróbujemy utworzyć klucz podstawowy, utworzy on Unique Non-clustered.
Upuśćmy i utwórzmy ponownie tabelę dbo.Customer. Ponieważ nie możemy utworzyć indeksu klastrowego na kolumnach, które akceptują wartości Null, musimy zdefiniować nasze kolumny 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)
Sprawdźmy, jakiego typu indeksy są tworzone za pomocą widoku systemowego sys.indexes. Powinien istnieć jeden indeks klastrowy, tak jak utworzyliśmy w SSN, i powinien istnieć jeden unikalny nieklastrowany, który powinien zostać utworzony przez ograniczenie klucza podstawowego.
Co to jest ograniczenie klucza podstawowego w programie SQL Server — samouczek dotyczący programu SQL Server / TSQL
Wideo demonstracyjne:co to jest ograniczenie klucza podstawowego w SQL Server i jak utworzyć klucz podstawowy