SQL ilişkisel tabloda veri ekleme

şöyle bir tablom var

birde örnek olarak şehir tablom şu şekilde

sehir

brans,yetkinlik hepsi aynı şekilde

amacım veri ekledıgı zaman ılk once sehirlere eklesın ve Idsine göre doktorlar tabloya sehir tablosunda son eklene verinin id numarasını eklesin

Kodum su sekilde

 "CREATE TRİGGER DoktorEkle on Sehir" +
                "After Insert" +
                "As" +
                "Declare @ID int" +
                "Select @ID=id FROM inserted" +
                "INSERT INTO Doktorlar (sehir_id) AVALUES (@ID)";

Bu kodumda bir sorun var mı?

Yoksa aynı şekilde brans,yetkinlik ve kullanıcılarıda eklemem gerekiyor fakat hepsine ayrı ayrı triggerle yapmak biraz saçma geliyor hepsini tek seferde aynı trigger içerisinde ekleyebilir miyim?

Merhabalar,

Oncelikle: Soru Sorarken Sıkça Düşülen Hatalar #10

Cunku su haliyle trigger’daki INSERT calisamaz gozukuyor.

Neden doktorlar tablosuna sehir eklemek istiyorsunuz?

her doktorun kendine ait bir şehri var

doktor tablosuna Id eklıcek sadece ama Idsini sehire göre eklemıcek mı?

Doktorla sehrin arasindaki iliski aidiyet mi? Bir sehir birden fazla doktora ait olabilir mi?

Tablolara ID eklenmez, satir eklenir. Doktor tablosuna eklenecek sey doktoru temsil eden doktor satiri olacaktir. Doktora ait olan sehrin ID’sini doktor satirinin sehir_id’sine yazmalisiniz.

Şöyle anladım, doktor tablosuna yeni bir satır eklenecek diyelim. Eklenecek satırdaki bilgilerde şehirler tablosunda olmayan bir şehir var (örn. Samsun). Eğer böyleyse önce Samsun verisi şehirler tablosuna eklensin, eklenen Samsun verisinin ID’si doktorlar tablosuna eklenmeye çalışılan satırda ilgili alana kaydedilsin. Böyle demeye çalıştığınızı anladım.

Eğer amacınız buysa zaten şehir sayısı sabit, baştan bu tabloyu doldurun tüm şehirler için. Örnekte belirttiğim işlem bence bir süre sonra “böyle bir sehir var mı? var. Öyleyse birşey yapma ve sonraki adımdan devam et” gibi gereksiz bir algoritma adımının uygulanmaya çalışılmasına sebep olabilir. Bence buna hiç gerek yok, şehirler tablosunu doldurun.

Sizi yanlış anlamış da olabilirim. İyi çalışmalar