SQL FOREIGN KEY Kısıtlaması

SQL FOREIGN KEY Kısıtlaması

Bir tablodaki Yabancı Anahtar, diğer bir tablodaki Ana Anahtara işaret eder.

Bir örnek üzerinden yabancı anahtarı açıklayalım. Aşağıdaki iki tabloyu görün:

"Persons" tablosu:

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

"Orders" tablosu:

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

Lütfen, "Orders" tablosundaki "Id_P" sütunun, "Persons" tablosundaki "Id_P" sütununa işaret ettiğini unutmayın.

"Persons" tablosundaki "Id_P" sütunu, "Persons" tablosundaki Ana Anahtar'dır.

"Orders" tablosundaki "Id_P" sütunu, "Orders" tablosundaki Yabancı Anahtar'dır.

Yabancı Anahtar Kısıtlaması, tablolar arasındaki bağlantıyı bozmak isteyen eylemleri önlemek için kullanılır.

Yabancı Anahtar Kısıtlaması, dışa yönlendirilen tablodaki değerlerden biri olmak zorunda olduğu için yasadışı veri girişlerini önleyebilir.

CREATE TABLE üzerinde Yabancı Anahtar Kısıtlaması

"Orders" tablosu oluşturulduğunda "Id_P" sütununa Yabancı Anahtar oluşturmak için aşağıdaki SQL:

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
Yabancı Anahtar (Id_P) Yabancı Anahtar'a Referans Verir
)

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 kısıtlamasını adlandırmak ve birden fazla sütun için FOREIGN KEY kısıtlaması tanımlamak gerekirse, aşağıdaki SQL gramerini kullanın:

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)
)

ALTER TABLE üzerinde SQL FOREIGN KEY Kısıtlaması

"Orders" tablosu zaten varken "Id_P" sütununa FOREIGN KEY kısıtlaması oluşturmak için aşağıdaki SQL kullanın:

MySQL / SQL Server / Oracle / MS Access:

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

FOREIGN KEY kısıtlamasını adlandırmak ve birden fazla sütun için FOREIGN KEY kısıtlaması tanımlamak gerekirse, aşağıdaki SQL gramerini kullanın:

MySQL / SQL Server / Oracle / MS Access:

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

FOREIGN KEY Kısıtlamasını İptal Etme

FOREIGN KEY kısıtlamasını iptal etmek için aşağıdaki SQL kullanın:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders