Подобно на MySQL, PostgreSQL, Oracle и много други релационни бази данни, SQL Server се използва най-добре при присвояване на уникални първични ключове на повечето таблици с бази данни.
Предимствата на използването на цифрови, автоматично увеличаващи се първични ключове са многобройни, но най-въздействащите предимства са по-бързата скорост при изпълнение на заявки и независимостта на данните при търсене в хиляди записи, които могат да съдържат често променяни данни на друго място в таблицата. С последователен и уникален цифров идентификатор приложенията могат да се възползват от тези по-бързи и надеждни заявки.
Създаване на основна таблица
След като се свържете с вашия SQL Server, обикновено започвате с CREATING
нова таблица, която съдържа полето, което искате да използвате като ваш увеличен първичен ключ. За нашия пример ще се придържаме към изпитания и верен id
поле:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Проблемът тук е, че нямаме начин да контролираме нашия id
поле. Когато се вмъкне нов запис, ние не само трябва да въвеждаме ръчно стойност за id
, но трябва да изпълним заявка предварително, за да се опитаме да проверим този id
стойността вече не съществува (почти невъзможно, когато се работи с много едновременни връзки).
Използване на ограничения за идентичност и първичен ключ
Оказва се, че решението използва две опции за ограничаване, предоставени от SQL Server.
Първият е PRIMARY KEY
, което, както подсказва името, принуждава посочената колона да се държи като напълно уникален индекс за таблицата, позволявайки бързо търсене и заявки.
Докато SQL Server позволява само един PRIMARY KEY
ограничение, присвоено на една таблица, този PRIMARY KEY
може да се дефинира за повече от една колона. В сценарий с няколко колони отделните колони могат да съдържат дублиращи се, неуникални стойности, но PRIMARY KEY
ограничението гарантира, че всяка комбинация на ограничените стойности всъщност ще бъде уникален спрямо всяка друга комбинация.
Втората част от пъзела е IDENTITY
ограничение, което информира SQL Server автоматично да увеличава числовата стойност в рамките на определената колона всеки път, когато се INSERTED
нов запис . Докато IDENTITY
може приемете два аргумента на числовото seed
откъдето ще започват стойностите, както и increment
, тези стойности обикновено не са посочени с IDENTITY
ограничение и вместо това са оставени по подразбиране (и двете по подразбиране са на 1
).
С това ново знание на една ръка разстояние можем да пренапишем предишните си CREATE TABLE
изявление чрез добавяне на нашите две нови ограничения.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Това е всичко. Сега id
колона от нашите books
таблицата ще се увеличава автоматично при всеки INSERT
и id
полето гарантирано също е уникална стойност.