Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zdefiniować klucz główny automatycznego przyrostu w SQL Server

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ść.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 sposoby konwersji HEX na INT w SQL Server (T-SQL)

  2. Pobieranie wartości zwracanej z JDBC MSSQL

  3. Dodaj relację klucza obcego między dwiema bazami danych

  4. Uzyskaj listę obsługiwanych stref czasowych w SQL Server (T-SQL)

  5. Architektura programu SQL Server AlwaysOn (grupa dostępności) i instalacja krok po kroku -2