SQL Foreign key ne olduğu ile ilgili bir önceki yazıda iki tablo arasında yapılan ilişkisel bir kısıtlama olduğuna değinmiştik. Yabancı anahtar kısıtlaması bir tablodaki birincil anahtar ile diğer tablodaki bir alan ile sağlanabilir. Bu açıklamadan yola çıkarak. Aşağıdaki SQL kodlarını oluşturuyoruz.
Yazar ve Tur adında tablolara sahip olduğumuz düşünerek iki yöntemle yabancı anahtar oluşturulmasını sağlayalım.
1 2 3 4 5 6 7 |
CREATE TABLE yazar( yazarno INT IDENTITY(1,1) NOT NULL PRIMARY KEY , yazarad varchar(50), dogumtarih date ) |
1 2 3 4 5 6 |
CREATE TABLE tur( turno INT IDENTITY(1,1) NOT NULL PRIMARY KEY , turad varchar(50) ) |
Yabancı anahtarı iki şekilde oluşturabiliriz.
1 Yöntem: Tablo oluşturulurken yabancı anahtar kısıtlaması yazılarak yapılabilir. kitap tablosundaki yazarno değeri referans olarak yazar tablosundaki yazarno olduğunu belirtiliyor.
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE kitap( kitapno INT IDENTITY(1,1) NOT NULL PRIMARY KEY , isbno varchar(50), kitapadi varchar(100), yazarno int FOREIGN KEY REFERENCES yazar(yazarno), turno int, sayfasayisi int ) |
2.Yöntem: Tablo oluşturulduktan sonra ALTER komutu ile kısıtlama yapılabilir.
1 2 3 4 |
ALTER TABLE kitap ADD CONSTRAINT Fk_turno FOREIGN KEY (turno) REFERENCES tur(turno) |
Merhabalar benim bir sorunum var
bir tablonun primary keyini başka bir tablodaki foreign key e otomatik olarak yazdıramıyor muyuz?
yani kayit oluşturduğumda 3 farklı tabloya aynı anda kayıt atıyorum ve 2 tablonun primary keylerini diğer iki tabloya (ayrı ayrı) foreign key olarak atamak istiyorum ama olmuyor
NOT NULL dediğimdede boş geçemezsin hatası veriyor
[…] Ders : SQL Foreign Key Kullanımı […]