sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan tilføjes en fremmednøglebegrænsning til en eksisterende tabel i SQL Server (T-SQL)

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.


  1. Postgres-funktion returnerer tabel returnerer ikke data i kolonner

  2. SQL Group By med en Order By

  3. Præstationstestmetoder:Opdagelse af en ny måde

  4. hvordan adskilles strengen i forskellige kolonner?