SQL FOREIGN KEY rajoitus

SQL FOREIGN KEY rajoitus

Yksi tauluun kuuluva vierasavain osoittaa toiseen tauluun PRIMARY KEY:hen.

Käytetään esimerkkiä selittääksesi vierasavainta. Katso seuraavat kaksi taulua:

"Persons"-taulussa:

Id_P Sukunimi EtuNimi Osoite Kaupunki
1 Adams John Oxford Street Lontoo
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Peking

"Orders"-taulussa:

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Huomaa, että "Orders"-taulun "Id_P"-sarakkeessa osoitetaan "Persons"-taulun "Id_P"-sarakkeeseen.

"Persons"-taulun "Id_P"-sarakkeessa on PRIMARY KEY "Persons"-taulussa.

"Orders"-taulun "Id_P"-sarakkeessa on FOREIGN KEY "Orders"-taulussa.

Vierasavain-rajoitus käytetään estämään toimintoja, jotka voivat tuhota taulujen välisiä yhteyksiä.

Vierasavain-rajoitus voi myös estää laittoman tiedon lisäämisen vierasavaintaulukkoon, koska se on oltava arvo, joka on yhdessä olevassa taulussa.

SQL FOREIGN KEY-rajoitus CREATE TABLE

Seuraava SQL luo "Orders"-tauluun FOREIGN KEY "Id_P":

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
Vierasavain (Id_P) viittaa henkilöihin (Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

SQL FOREIGN KEY Constraint on ALTER TABLE

如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束,请使用下面的 SQL 语法:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

撤销 FOREIGN KEY 约束

如需撤销 FOREIGN KEY 约束,请使用下面的 SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders