MS SQL Server Eğitimleri 39 – The UPDATE Statement Conflicted with The FOREIGN KEY Constraint Hatası Çözümü

 

MS SQL Eğitimlerimize bir hata çözümü ile devam ediyoruz.

İlişkili veritabanlarında kayıtlar bir biri ile bağıntılı ve ilişkili olduğundan bir tabloda yapılan değişikliklerin tüm ilişkili tablolarına yansıtılması gerekir. Özellikle Foreing Key anahtarının bulunduğu tabloda eğer Foreign Key olan alanda bir Update işlemi yapacaksanız mutlaka bunu birincil tablosunda da yapmanız gerekir. Bunun olmasını ayarlamadı iseniz SQL bu işlemin gerçekleşmesine izin vermeyecektir ve hata dönecektir. 

Alınan bu hatayı çözmeyi öğreneceğiz bu yazımda.

Öncelikle hatamızı görelim.

ORDERS tablosundaki FOREIGN  KEY olan alan CUSTOMERID değerini UPDATE etmeye çalışalım.

Böyle bir durumdan kurtulmak için yapmamız gereken işlem şu.

 

STEP 1

Var olan diyagram üzerine sağ tıklayıp MODIFY diyoruz.

 

STEP 2

 

STEP 3

Bir biri ile ilişkili olan tablolarda ilişkiler üzerine gelip sağ tıklıyoruz ve Properties diyoruz.

 

STEP 4

Burada DELETE Rule ve UPDATE Rule sekmelerini No Action durumundan CASCADE durumuna çekiyoruz.

Bu adımı değişikliğin ortak olarak uygulanmasını istediğimiz tüm ilişkiler için tekrarlıyoruz.

STEP 5

Sonra diyagramı kaydediyoruz.

İşte bu kadardı şimdi az önce güncellemeye çalıştığımız kaydı yeniden güncellemeye çalışalım.

Gördüğünüz gibi işlem başarılı bir şekilde 5 kaydı güncelledi.

Dikkat: Burada dikkat etmeniz gereken önemli bir konu şudur. Güncellemek istediğiniz değer eğer Primary Key olan tabloda bulunmuyorsa bu işlemi gerçekleştiremeyecektir. Veri tutarlılığı açısından önemlidir ve SQL buna izin vermez.

Örneğin CUSTOMERID değeri 1000 olan bir müşterimiz yok. ORDERS tablosundaki var olan bir değeri 1000 ile güncellemek istersem bu gerçekleşmeyecektir. 

Bu işlemde bu kadardı bir sonraki yazılarımda görüşmek üzere.

 

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/