SQL YABANCI KEY Kısıtlama
Başka bir tablodaki bir birincil anahtar için bir tablo noktalarında bir yabancı anahtar.
bir örnekle yabancı anahtar açıklayalım. Aşağıdaki iki tablo bak:
"Persons" tablosu:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Orders" tablosu:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Not "P_Id" sütun "Orders" için tablo noktaları "P_Id" sütun "Persons" tablosundaki.
"P_Id" sütununda "Persons" tablosundaki PRIMARY KEY olan "Persons" tablosundaki.
"P_Id" sütun "Orders" tablosunda bir yabancı anahtar olan "Orders" tablo.
Yabancı anahtar kısıtlaması tablolar arasındaki bağlantıları yok edeceğini eylemleri engellemek için kullanılır.
o işaret tablosunda bulunan değerlerden biri olması gerekir, çünkü yabancı anahtar kısıtlaması da, yabancı anahtar sütuna sokulan geçersiz veriler sağlar.
TABLO OLUŞTURMA SQL YABANCI KEY Kısıtlama
Aşağıdaki SQL üzerinde YABANCI KEY yaratır "P_Id" zaman sütununda "Orders" tablosu oluşturulur:
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Ve aşağıdaki SQL sözdizimini kullanın, birden çok sütun üzerinde bir FOREIGN KEY kısıtlaması tanımlamak için yabancı anahtar kısıtlaması adlandırma izin vermek için:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
ALTER TABLE SQL YABANCI KEY Kısıtlama
Üzerinde bir FOREIGN KEY kısıtlaması oluşturmak için "P_Id" sütununda "Orders" tablosu zaten oluşturulur, aşağıdaki SQL kullanın:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Ve aşağıdaki SQL sözdizimini kullanın, birden çok sütun üzerinde bir FOREIGN KEY kısıtlaması tanımlamak için yabancı anahtar kısıtlaması adlandırma izin vermek için:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY kısıt
FOREIGN KEY kısıtlaması bırak 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