Sök…


Skapa en tabell med en utländsk nyckel

I det här exemplet har vi ett befintligt bord, SuperHeros .

Denna tabell innehåller ett primärt nyckel- ID .

Vi lägger till ett nytt bord för att lagra krafterna hos varje superhjälte:

CREATE TABLE HeroPowers
(
    ID int NOT NULL PRIMARY KEY,
    Name nvarchar(MAX) NOT NULL,
    HeroId int REFERENCES SuperHeros(ID)
)

Kolumnen HeroId är en utländsk nyckel till bordet SuperHeros .

Utländska nycklar förklarade

Begränsningar för utländska nycklar säkerställer dataintegritet genom att säkerställa att värden i en tabell måste matcha värden i en annan tabell.

Ett exempel på en utländsk nyckel är: På ett universitet måste en kurs tillhöra en institution. Kod för detta scenario är:

CREATE TABLE Department (
    Dept_Code        CHAR (5)     PRIMARY KEY,
    Dept_Name        VARCHAR (20) UNIQUE
);

Sätt in värden med följande påstående:

INSERT INTO Department VALUES ('CS205', 'Computer Science');

Följande tabell innehåller information om ämnen som erbjuds av datavetenskapsgrenen:

CREATE TABLE Programming_Courses (
    Dept_Code       CHAR(5),
    Prg_Code        CHAR(9) PRIMARY KEY,
    Prg_Name        VARCHAR (50) UNIQUE,
    FOREIGN KEY (Dept_Code) References Department(Dept_Code)
);

(Datatypen för utländsk nyckel måste matcha datatypen för den hänvisade nyckeln.)

Begränsningen med utländsk nyckel i kolumnen Dept_Code tillåter värden endast om de redan finns i den refererade tabellen, Department . Detta innebär att om du försöker infoga följande värden:

INSERT INTO Programming_Courses Values ('CS300', 'FDB-DB001', 'Database Systems');

databasen kommer att skapa ett fel på CS300 utländsk nyckel, eftersom CS300 inte finns i Department . Men när du försöker ett nyckelvärde som finns:

INSERT INTO Programming_Courses VALUES ('CS205', 'FDB-DB001', 'Database Systems');
INSERT INTO Programming_Courses VALUES ('CS205', 'DB2-DB002', 'Database Systems II');

sedan tillåter databasen dessa värden.

Några tips för att använda utländska nycklar

  • En utländsk nyckel måste hänvisa till en UNIK (eller PRIMÄR) nyckel i överordnade tabeller.
  • Att ange ett NULL-värde i en kolumn med utländsk nyckel leder inte till något fel.
  • Utländska nyckelbegränsningar kan referera tabeller inom samma databas.
  • Främmande nyckelbegränsningar kan hänvisa till en annan kolumn i samma tabell (självreferens).


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow