Foreign Key

FOREIGN KEY kısıtlaması, tablolar arasındaki bağlantıları yok edecek eylemleri önlemek için kullanılır.

FOREIGN KEY, bir tabloda, başka bir tablodaki PRIMARY KEY’e atıfta bulunan bir alandır (veya alanlar topluluğudur).

FOREIGN KEY sahip tabloya alt tablo, PRIMARY KEY’e sahip tabloya ise başvurulan veya ana tablo adı verilir.

Aşağıdaki iki tabloya bakalım:

Persons Tablosu

Foreign Key

Orders Tablosu

Foreign Key

“Orders” tablosundaki “PersonID” sütununun “Persons” tablosundaki “PersonID” sütununu gösterdiğine dikkat edin.

“Persons” tablosundaki “PersonID” sütunu, “Persons” tablosundaki PRIMARY KEY’dir.

“Orders” tablosundaki “PersonID” sütunu, “Orders” tablosundaki FOREIGN KEY’dir.

FOREIGN KEY kısıtlaması, üst tabloda yer alan değerlerden biri olması gerektiğinden, geçersiz verilerin FOREIGN KEY sütununa eklenmesini engeller.

CREATE TABLE Komutunda FOREIGN KEY Kullanımı

Aşağıdaki SQL kodu, “Orders” tablosu oluşturulurken “PersonID” sütununda bir FOREIGN KEY oluşturur:

CREATE TABLE Orders (
     OrderID int NOT NULL PRIMARY KEY,
     OrderNumber int NOT NULL,
     PersonID int FOREIGN KEY REFERENCES Persons(PersonID) 
); Code language: SQL (Structured Query Language) (sql)

Bir FOREIGN KEY kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir FOREIGN KEY kısıtlaması tanımlamak için aşağıdaki SQL kodunu kullanın:

CREATE TABLE Orders (
     OrderID int NOT NULL,
     OrderNumber int NOT NULL,
     PersonID int,
     PRIMARY KEY (OrderID),
     CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
     REFERENCES Persons(PersonID) 
); Code language: SQL (Structured Query Language) (sql)

ALTER TABLE Komutunda FOREIGN KEY Kullanımı

“Orders” tablosu zaten oluşturulduğundan “PersonID” sütununda bir FOREIGN KEY kısıtlaması oluşturmak için aşağıdaki SQL kodunu kullanın:

ALTER TABLE Orders 
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); Code language: SQL (Structured Query Language) (sql)

Bir FOREIGN KEY kısıtlamasının adlandırılmasına izin vermek ve birden çok sütunda bir FOREIGN KEY kısıtlaması tanımlamak için aşağıdaki SQL kodunu kullanın:

ALTER TABLE Orders 
ADD CONSTRAINT FK_PersonOrder 
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); Code language: SQL (Structured Query Language) (sql)

FOREIGN KEY Kısıtlamasını Silmek

FOREIGN KEY kısıtlamasını kaldırmak için aşağıdaki SQL kodunu kullanın:

ALTER TABLE Orders 
DROP CONSTRAINT FK_PersonOrder;Code language: SQL (Structured Query Language) (sql)