I lighed med MySQL, PostgreSQL, Oracle og mange andre relationelle databaser, er SQL Server bedst udnyttet, når der tildeles unikke primærnøgler til de fleste databasetabeller.
Fordelene ved at bruge numeriske, automatisk inkrementerede primærnøgler er talrige, men de mest virkningsfulde fordele er hurtigere hastighed, når du udfører forespørgsler og datauafhængighed, når du søger gennem tusindvis af poster, som kan indeholde hyppigt ændrede data andre steder i tabellen. Med en ensartet og unik numerisk identifikator kan applikationer drage fordel af disse hurtigere og mere pålidelige forespørgsler.
Grundlæggende tabeloprettelse
Når du først er tilsluttet din SQL Server, vil du normalt starte med at CREATING
en ny tabel, der indeholder det felt, du ønsker at bruge som din øgede primærnøgle. For vores eksempel holder vi os til det gennemprøvede id
felt:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Problemet her er, at vi ikke har nogen måde at kontrollere vores id
Mark. Når en ny post indsættes, skal vi ikke kun manuelt indtaste en værdi for id
, men vi er nødt til at udføre en forespørgsel på forhånd for at forsøge at bekræfte det id
værdi eksisterer ikke allerede (en næsten umulighed, når man har at gøre med mange samtidige forbindelser).
Brug af identitet og primære nøglebegrænsninger
Løsningen viser sig at bruge to begrænsningsmuligheder leveret af SQL Server.
Den første er PRIMARY KEY
, hvilket som navnet antyder, tvinger den angivne kolonne til at opføre sig som et helt unikt indeks for tabellen, hvilket giver mulighed for hurtig søgning og forespørgsler.
Mens SQL Server kun tillader én PRIMARY KEY
begrænsning tildelt til en enkelt tabel, den PRIMARY KEY
kan defineres for mere end én kolonne. I et scenarie med flere kolonner kan individuelle kolonner indeholde duplikerede, ikke-unikke værdier, men PRIMARY KEY
begrænsning sikrer, at hver kombination af begrænsede værdier vil faktisk være unikke i forhold til enhver anden kombination.
Den anden brik i puslespillet er IDENTITY
begrænsning, som informerer SQL Server om automatisk at øge den numeriske værdi inden for den angivne kolonne, når en ny post er INSERTED
. Mens IDENTITY
kan accepter to argumenter for det numeriske seed
hvor værdierne vil begynde fra samt increment
, er disse værdier typisk ikke angivet med IDENTITY
begrænsning og i stedet efterlades som standard (begge standard er 1
). ).
Med denne nye viden lige ved hånden, kan vi omskrive vores tidligere CREATE TABLE
erklæring ved at tilføje vores to nye begrænsninger.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Det er alt, hvad der er til det. Nu id
kolonne i vores books
tabel vil automatisk blive forøget efter hver INSERT
og id
felt er garanteret også en unik værdi.