I databasetermer en fremmednøgle er en kolonne, der er knyttet til en anden tabels primære nøglefelt i en relation mellem to tabeller.
En fremmednøgle er en type begrænsning, og så hvis du vil oprette en fremmednøgle i SQL Server, skal du oprette en fremmednøglebegrænsning.
Denne artikel demonstrerer, hvordan man opretter en fremmednøglebegrænsning i SQL Server ved hjælp af Transact-SQL.
Eksempel
Den nemmeste måde at demonstrere dette på er med et eksempel. I dette eksempel bruger vi T-SQL til at oprette en fremmednøglebegrænsning ved hjælp af ALTER TABLE
erklæring:
USE Music; ALTER TABLE Albums ADD CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE CASCADE ON UPDATE CASCADE ; GO
Dette skaber en relation mellem to tabeller (Albums
tabellen og Artists)
bord). Vi gør dette ved at oprette en fremmednøgle-begrænsning på Albums
bord. Vi angiver, at Albums.ArtistId
kolonnen er en fremmednøgle til Artists.ArtistId
kolonne.
Dette forudsætter naturligvis, at de to tabeller eksisterer. Hvis de ikke gjorde det, ville vi få en fejl.
Vi bruger også GO
som faktisk ikke er en del af T-SQL. Det genkendes af forskellige hjælpeprogrammer for at signalere slutningen af en batch af T-SQL-sætninger.
Tjek resultatet
Du kan tjekke resultatet ved at køre følgende script:
USE Music; SELECT name, type_desc, delete_referential_action_desc, update_referential_action_desc FROM sys.foreign_keys; GO
Dette viser fremmednøglerne i Music
database. Skift navnet på databasen, så det passer.
Hvis din database har for mange fremmednøgler, kan du altid indsnævre den med en WHERE
klausul til den specifikke fremmednøgle, som du er interesseret i. Du kan også bruge jokertegnet (*
), hvis du har brug for, at alle kolonner skal returneres.