Net als MySQL, PostgreSQL, Oracle en vele andere relationele databases, kan SQL Server het beste worden gebruikt bij het toewijzen van unieke primaire sleutels aan de meeste databasetabellen.
De voordelen van het gebruik van numerieke, automatisch oplopende primaire sleutels zijn talrijk, maar de meest impactvolle voordelen zijn een hogere snelheid bij het uitvoeren van query's en gegevensonafhankelijkheid bij het doorzoeken van duizenden records die mogelijk vaak gewijzigde gegevens elders in de tabel bevatten. Met een consistente en unieke numerieke identifier kunnen applicaties profiteren van deze snellere en betrouwbaardere zoekopdrachten.
Basistabel maken
Eenmaal verbonden met uw SQL Server, zou u normaal gesproken beginnen met CREATING
een nieuwe tabel die het veld bevat dat u als uw verhoogde primaire sleutel wilt gebruiken. Voor ons voorbeeld houden we het bij de beproefde id
veld:
CREATE TABLE books (
id INT NOT NULL,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Het probleem hier is dat we geen manier hebben om onze id
te controleren veld. Wanneer een nieuw record wordt ingevoegd, moeten we niet alleen handmatig een waarde invoeren voor id
, maar we moeten van tevoren een zoekopdracht uitvoeren om te proberen die id
. te verifiëren waarde bestaat nog niet (bijna onmogelijk bij veel gelijktijdige verbindingen).
Identiteit en primaire sleutelbeperkingen gebruiken
De oplossing blijkt gebruik te maken van twee beperkingsopties van SQL Server.
De eerste is PRIMARY KEY
, die, zoals de naam al doet vermoeden, de gespecificeerde kolom dwingt zich te gedragen als een volledig unieke index voor de tabel, waardoor snel zoeken en query's mogelijk zijn.
Terwijl SQL Server slechts één PRIMARY KEY
. toestaat beperking toegewezen aan een enkele tabel, die PRIMARY KEY
kan voor meer dan één kolom worden gedefinieerd. In een scenario met meerdere kolommen kunnen afzonderlijke kolommen dubbele, niet-unieke waarden bevatten, maar de PRIMARY KEY
beperking zorgt ervoor dat elke combinatie van beperkte waarden zal in feite uniek zijn ten opzichte van elke andere combinatie.
Het tweede stukje van de puzzel is de IDENTITY
constraint, die SQL Server informeert om de numerieke waarde binnen de opgegeven kolom automatisch te verhogen wanneer een nieuwe record INSERTED
wordt . Terwijl IDENTITY
kan accepteer twee argumenten van de numerieke seed
waar de waarden beginnen en de increment
, worden deze waarden meestal niet gespecificeerd met de IDENTITY
beperking en worden in plaats daarvan als standaard gelaten (beide standaard op 1
).
Met deze nieuwe kennis binnen handbereik, kunnen we onze vorige CREATE TABLE
. herschrijven verklaring door onze twee nieuwe beperkingen toe te voegen.
CREATE TABLE books (
id INT NOT NULL IDENTITY PRIMARY KEY,
title VARCHAR(100) NOT NULL,
primary_author VARCHAR(100),
);
Dat is alles. Nu de id
kolom van onze books
tabel wordt automatisch verhoogd bij elke INSERT
en de id
veld is ook gegarandeerd een unieke waarde.