MySql – Foreign Key Kontrolünü – Kısıtlamalarını Kapatmak

Standard

Aslında Türkçe mesleki anlamda kullanmak bence sağlıklı olmayabiliyor herzaman. Bu konuyu aratan kimsenin foreign key kısıtlaması diyeceğini zannetmiyorum 🙂
Disable Foreign Key Checks or Constraints desek daha sağlıklı olacaktı bence konu başlığına..

İlişkisel veritabanları ile çalışmaya başladığınız zaman hayatınıza foreign key adında yeni bir kavram girecek.
Ve ilişkili dataları kaydederken size ilişiği olan tablodaki kayıt yoksa veya başka yerde kullanılan bir datayı silmeye çalıştığınız zaman şöyle bir hata döndürür sistem:

Cannot add or update a child row: a foreign key constraint fails

Bu durumda ya deveyi güdeceksiniz yada diyardan gideceksiniz diye düşünebilirsiniz ama Hatalı kaydı bulmak bazen zor olabiliyor.

Ben size 3 satırda bu kontrol işlemini kapatmayı göstereceğim..

SET foreign_key_checks = 0;
DELETE FROM users WHERE id > 45;
SET foreign_key_checks = 1;

Yukarda önce pasif ettik, silme işlemini yaptık ve tekrar aktif ettik gördüğünüz gibi.. Bunun yerine foreign_key i kaldırmak ta düşünülebilirdi ama en temizi zaten sırasıyla bu işlemleri yaparak hiç bu yollara baş vurmamanız..

ALTER TABLE users DROP FOREIGN KEY <foreign_key_name>

Yukarda da foreign_key kaldırmayı gösterdiğimize göre makalemizi sonlandırabiliriz 🙂

İyi çalışmalar herkese..

3 thoughts on “MySql – Foreign Key Kontrolünü – Kısıtlamalarını Kapatmak

    • Onur Canalp

      Yani ne anlama geldiği de ne işe yaradığı da örnek de var zaten yazımın içinde… Okumadan direk yorum mu yazdınız anlayamadım?

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir