/* Ana tabloda bir değişklik yaptıpımız zaman; bununla ilişkili olan yavru tablodaki kayıtların da ototmatik olarak değişmesini istiyorsak, CASCADE özelliğini dahil ederek ON UPDATE ifadesini kullanmamız gerekir. ON UPDATE ifadesinin varsayılan özelliği NO ACTION dır. Yani, Cascade No Action ile hiç yazmamak arasında bir fark yoktur. Aşağıdaki örneğimizde, ilk kodumuzun sonuna on update cascade ifadesini ekledik. Böylelikle ilk tabloda yapılan değişklik; otomatik olarak ikinci tabloya da etki edecektir. */
use yuksel2 go ALTER TABLE MarketSatis add constraint FK_Satis_UrunKod foreign key(UrunKod) references DepoGiris(UrunKod) on update cascade go
/* Test etmek için; ana tablomuz olan DepoGirisi açarak, içindeki 1 nolu değere sahip ilk kaydı, 9 olarak değiştirelim ve kaydederek çıkalım. Bu işlem sonunda hiçbir hata mesajı ile karşılaşmadığınıza dikkat ediniz. */
update DepoGiris set UrunKod=9 where UrunKod=1 go select * from DepoGiris
select * from MarketSatis --MarketSatış tablosundaki UrunNo 1 olan kayıtlar da 9 oldu.
/* Şimdi ana tablomuz olan DepoGiriş tablosunu açarak, 9 nolu kayıdı silmeye çalışalım. Bu işlem sonunda, karşımıza gelen dialog kutusunda Yes butonuna tıkladığımızda; silme işleminin gerçekleşmediğini göreceğiz. Peki bunu nasıl yapacağız?? */
delete DepoGiris where UrunKod=9 -- yapmadı -- Aşağıdaki kodu yazarak oluşturduğumuz constraint silelim.
use yuksel2 go alter table MarketSatis drop constraint FK_Satis_UrunKod
/* Diğer bir CASECADE komutu DELETE komutudur. Eğer bunu aktif hale getirisek; ana tabloda bir kaydı sildiğimiz zaman, yavru tablodaki bununla ilişkili tüm kayıtların, otomatik olarak silinmesini sağlarız. Aşağıdaki kod ile hem update hem de delete ifadeleri için; CASCADE komutunu aktif hale getiriyoruz. Delete için diğer bir parametre NO ACTION dır ve yazmamakla arasında hiçbir fark yoktur. Yani varsayılan ayardır. */
alter table MarketSatis add constraint FK_satis_UunKod Foreign Key(UrunKod) references DepoGiris(Urunkod) on update cascade on delete cascade go /* Şimdi ana tablomuz olan DepoGiris i açıp; 9 numaralı urunkoduna sahip kaydı silerek, tablomuzu kapatalım. Hiçbir hata mesajı ile karşılaşmadan işlemin gerçekleştiğini göreceğiz. */ delete DepoGiris where UrunKod=9 go select * from DepoGiris select * from MarketSatis go -- ana tabloda da yavru tabloda da kayıtlar gitti