sql >> Database >  >> RDS >> Sqlserver

Een primaire sleutel voor automatische verhoging definiëren in SQL Server

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.


  1. Hoe rijen in kolommen in Oracle-tabel worden geconverteerd

  2. Hoe het mysql root-wachtwoord te wijzigen?

  3. Hoe lees je alle rijen van een enorme tafel?

  4. Een MySQL-tabel, indices en gegevens dupliceren