SQL Foreign Key Kullanımı
Sql foreign key ilişkisel veri tabanında bir tabloda belirlediğimiz bir event olması durumunda diğer tabloda işlem yapılmasını sağlayan bir yapıdır. bir nevi triggere benziyor.
Örneğin bizim urunler ve urun_resim diye iki adet tablomuz olsun birinci tabloda ürünlerimizi ikinci tabloda ürüne ait görselleri tutalım.
Biz eğer foreign key kullanmazsak üründe silme işlemi yapıldığı zaman ürün resimleri ya veri tabanında çöp olarak kalacak ki bu saçma olur yada ek kod yazıp urun_resim tablosundan da bu görselleri silmemiz gerekecek işte foreign key tam bu noktada devreye giriyor.
Eğer biz foreign key kullanırsak diyoruzki urunler tablomdan bir ürün silindiğinde sende o ürünün id sine ait ürün resimlerini otomatik sil diyoruz.
örneğin:
ALTER TABLE `urun_resim` ADD CONSTRAINT `foreign_key_adi` FOREIGN KEY (`urun_id`) REFERENCES `urunler` (`urun_id`) ON DELETE CASCADE;
Yukarıdaki kodda urun_resim tablosuna foreign_key_adi adında bir trigger oluştruduk ve dedikki urunler tablosunda bir (DELETE) silme işlemi gerçekleştiğinde urun_id sini al ve urun_resim tablosundaki urun_resim.urun_id sütununda urunler.urun_id eşleşenleri sil dedik.
Yani biz urun_resim tablosuna bir foreign key oluşturduysak bir ürünü resimleriyle beraber silmek için aşağıdaki sql kodunu çalıştırmamız yeterli olacaktır.
DELETE FROM urunler WHERE urun_id='1' -- urun_id si 1 olan ürünleri sil, urun_resim tablosunda urun_id si 1 olan resimleri sil