İlişkisel olmayan veritabanına sonradan foreign key tanımlamak
Merhaba arkadaşlar, elimde hazır hastane veritabanı var. Verileri eklemek için iller
, ilçeler (districts)
ve hastaneler (hospitals)
tablosu oluşturdum. Sorun şu ki bendeki dosyada hastane tablosundaki ilce alanı foreign key değil district_name
olarak ilceler
tablosuyla ilişki kurulmadan varchar olarak tanımlanmış. Ben ise iki tablo arasında ilişki kurmak istiyorum, yani district_name
sütununa 'ÇUKUROVA', 'CEYHAN', 'YÜREĞİR', ....., 'TATLIÇAY'
olarak eklemiş verileri, tabloya district_id
'lerini (ilceler tablosunaki idlerini) 135,136,138, ..., 155
eklemek istiyorum.
Google da tabloya sonradan foreign key eklemek
başlıklarıyla yazılmış bir çok yazıyı okudum ve uyguladım ama olmadı.
Yaklaşık 1000 satırlık kodu tek tek id'leri ile değiştiremeyeceğim için bir çözüm yolu bulmayı ümit ediyorum.
Bu konuda bilgisi olan varsa, yardımcı olabirse sevinirim.
hastaneler tablosu
CREATE TABLE "hospitals" (
"id" integer NOT NULL,
"hospital" varchar(200) NOT NULL,
"address" varchar(500) NOT NULL,
"city_id" integer,
"district_id" integer NOT NULL, ***error
FOREIGN KEY("district_id") REFERENCES "districts"("id") DEFERRABLE INITIALLY DEFERRED,
FOREIGN KEY("city_id") REFERENCES "cities"("id") DEFERRABLE INITIALLY DEFERRED,
PRIMARY KEY("id" AUTOINCREMENT)
);
INSERT INTO `hospitals` (`id`, `city_id`, `district_id`, `hospital`, `address`) VALUES
bu string olan district_name sütununu district_id değerleri ile değiştirmek istiyorum
(1, '01', 'ÇUKUROVA', 'Adana Ağız Ve Diş Sağlığı Merkezi', '100.Yıl Mah. 85341 Sk No:2 Çukurova/adana'),
(2, '01', 'CEYHAN', 'Adana Ceyhan Devlet Hastanesi', 'Ceyhan Devlet Hastanesi, Ulus Mh., 01950 Ceyhan/adana',),
(3, '01', 'YÜREĞİR', 'Adana Devlet Hastanesi', 'Adana Devlet Hastanesi H.Ömer Sabancı Cd. (Eski Numune Hastanesi) 01140 Seyhan AdananSemt Polikliniği Eski Adana Devlet Hastanesi Karataş Yolu Üzeri 01160 Yüreğir Adanann')
.
.
.
.
.
.
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (2)
İnt alana string ifade eklenemeyeceğini biliyorum, yazarken eksik anlatmışım. district_id
foreign key olarak özellikle ben tanımladım,
bende ki hazır veritabanında district_name
olarak tanımlanmış.
Ben iki tablo (ilceler ve hastane tabloları) arasında ilişki olmasını istiyorum, yani tabloya district_name
'leri ile 'ÇUKUROVA', 'CEYHAN', 'YÜREĞİR', 'TATLIÇAY'
olarak eklenmiş verinin district_id
'lerini 135,136,138, ..., 155
olarak idleri ile tabloya eklenmesini istiyorum.
Kısacası tabloya sonradan foreign key tanımlayarak verilerin district_id
'leri almak ama yapamadım. Umarım bu sefer derdimi anlatabilmişimdir.
NOT: Tabloya district_id'yi foreign key tanımlıyorum ama id değerleri atanmıyor.