SQL 'de INNER JOIN için ben diagram kullandım ama silme işlemleri için bu hataya yol açtı kodlar yazıldıktan sonra. Sillme işleminin yapıla bilmesi için :
Diagram üzerinden "ON DELETE CASCADE" ekleme
-
SSMS’te veritabanını aç.
-
Database Diagrams → kullandığın diyagramı aç.
-
isimtablosu ilesoyisimtablosu arasındaki ilişki çizgisine çift tıkla. -
INSERT and UPDATE Specification bölümünü bul.
-
Delete Rule →
Cascadeolarak değiştir. -
Kaydedip diyagramı kapat.
2️⃣ SQL komutuyla ekleme (manuel yöntem)
Eğer diyagramdan uğraşmak istemiyorsan, SQL koduyla da ekleyebilirsin:
ALTER TABLE Soyisim
DROP CONSTRAINT FK_Soyisim_Isim; -- Burada mevcut foreign key adını yazacaksın
ALTER TABLE Soyisim
ADD CONSTRAINT FK_Soyisim_Isim
FOREIGN KEY (isim_Id) REFERENCES Isim(isim_Id)
ON DELETE CASCADE;
ON DELETE CASCADE tamamen silme işlemleri için tanımlanan bir FOREIGN KEY davranış kuralıdır.
Normal FOREIGN KEY: Ana tabloda bir kayıt silmek istersen ve bu kayıt başka tablolarda kullanılıyorsa REFERENTIAL INTEGRITY hatası alırsın (yani “Bu kayıt başka tabloda kullanılıyor, silemezsin” hatası).FOREIGN KEY + ON DELETE CASCADE: Ana tablodaki kayıt silinirse, ona bağlı tüm alt tablodaki kayıtlar otomatik silinir.
****Eğer FOREGIN KEY SQL Tarafında SQL sorguları ile yazılıyorsa ON DELETE CASCADE için SQL sorgusuna dahil edilmeli işte Manuel SQL Sorgusu:
FOREIGN KEY oluştururken ON DELETE CASCADE ekleme
CREATE TABLE Isim (
isim_Id INT PRIMARY KEY IDENTITY(1,1),
isim NVARCHAR(50) NOT NULL
);
CREATE TABLE Soyisim (
soyisim_Id INT PRIMARY KEY IDENTITY(1,1),
isim_Id INT NOT NULL,
soyisim NVARCHAR(50) NOT NULL,
CONSTRAINT FK_Soyisim_Isim
FOREIGN KEY (isim_Id)
REFERENCES Isim(isim_Id)
ON DELETE CASCADE
);