SQL FOREIGN KEY Kısıtlaması
- Önceki Sayfa SQL Ana Anahtarı
- Sonraki Sayfa SQL Check
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
- Önceki Sayfa SQL Ana Anahtarı
- Sonraki Sayfa SQL Check