Yabancıl Anahtar ilişkilerinde Cascade ve Restrict farkları nelerdir ?

Mysql veritabanında tablolar arasında ilişki kurabiliyorsunuz. Mysql’de ilişkilendirmenin nasıl yapılacağı hakkında çok bilgi vardır. Burada buna değinmeyeceğim. Benim bahsetmek istediğim bu ilişkilendirmeyi yaparken Cascade yada Restrict hangisini seçmemiz gerektiğidir?

Yabancıl anahtar ilişkisi kurarken aşağıdaki yapı tarzlarına dikkat etmeniz gerekir.

Cascade (kademeli): Eğer ilişkili ana satır (parent row) silinirse yada güncellenirse bağlı olduğu alt satır (child row) da silinir yada güncellenir.

 
Restrict (sınırlama): Fakat Restrict kullanırsanız o zaman ana satır (parent row) silinirse yada güncellenirse bağlı olduğu alt satır (child row) silinmez yada güncellenmez. Bir hata mesajı (error) verir. Örneğin “Silmeye çalıştığınız satırdaki …. alanı başka bir tabloda kullanılıyor”. Bu hata işlemini parent row silerseniz çıkar. Bağlı olduğu child row’u silseniz bir hata almazsınız ki olması gereken de budur.
 
Set Null (Boş): Parent row silinirse yada güncellenirse child row’a Boş (Null) değeri atanır.
 
No Action (Hiçbirşey yapma): Hiç bir işlem yapmaz. Yani parent row silinse de güncellense de child row da bir işlem yapılmaz.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.