Podobnie jak MySQL, PostgreSQL, Oracle i wiele innych relacyjnych baz danych, SQL Server najlepiej nadaje się do przypisywania unikalnych kluczy podstawowych do większości tabel baz danych.
Korzyści z używania numerycznych, automatycznie zwiększanych kluczy podstawowych jest wiele, ale najbardziej znaczące korzyści to szybsza szybkość wykonywania zapytań i niezależność od danych podczas przeszukiwania tysięcy rekordów, które mogą zawierać często zmieniane dane w innych miejscach w tabeli. Dzięki spójnemu i niepowtarzalnemu identyfikatorowi numerycznemu aplikacje mogą korzystać z tych szybszych i bardziej niezawodnych zapytań.
Podstawowe tworzenie tabeli
Po połączeniu z serwerem SQL zwykle zaczynasz od CREATING nową tabelę zawierającą pole, którego chcesz użyć jako zwiększony klucz podstawowy. W naszym przykładzie pozostaniemy przy wypróbowanym i prawdziwym id pole:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Problem polega na tym, że nie mamy możliwości kontrolowania naszego id pole. Po wstawieniu nowego rekordu musimy nie tylko ręcznie wprowadzić wartość dla id , ale musimy wykonać zapytanie z wyprzedzeniem, aby spróbować zweryfikować ten id wartość już nie istnieje (prawie niemożliwa w przypadku wielu jednoczesnych połączeń).
Korzystanie z ograniczeń tożsamości i klucza podstawowego
Okazuje się, że rozwiązanie korzysta z dwóch opcji ograniczeń dostarczanych przez SQL Server.
Pierwszy to PRIMARY KEY , co jak sama nazwa wskazuje wymusza zachowanie określonej kolumny jako całkowicie unikalnego indeksu dla tabeli, pozwalającego na szybkie wyszukiwanie i zapytania.
Podczas gdy SQL Server zezwala tylko na jeden PRIMARY KEY ograniczenie przypisane do pojedynczej tabeli, która PRIMARY KEY można zdefiniować dla więcej niż jednej kolumny. W scenariuszu z wieloma kolumnami poszczególne kolumny mogą zawierać zduplikowane, nieunikalne wartości, ale PRIMARY KEY ograniczenie zapewnia, że każda kombinacja ograniczonych wartości będzie w rzeczywistości unikalnych w stosunku do każdej innej kombinacji.
Drugim elementem układanki jest IDENTITY ograniczenie, które informuje SQL Server o automatycznym zwiększaniu wartości liczbowej w określonej kolumnie za każdym razem, gdy nowy rekord jest INSERTED . Podczas gdy IDENTITY może zaakceptuj dwa argumenty liczbowego seed skąd zaczną się wartości, a także increment , te wartości zazwyczaj nie są określone w IDENTITY ograniczenie i zamiast tego są pozostawione jako domyślne (oba domyślnie to 1 ).
Mając tę nową wiedzę na wyciągnięcie ręki, możemy przepisać naszą poprzednią CREATE TABLE oświadczenie, dodając nasze dwa nowe ograniczenia.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
To wszystko. Teraz id kolumna naszych books tabela będzie automatycznie zwiększana po każdym INSERT i id pole gwarantuje również unikalną wartość.