Çalışma Zamanında FOREIGN KEY oluşturma.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Bulut
Üye
Mesajlar: 30
Kayıt: 11 Mar 2005 03:09

Çalışma Zamanında FOREIGN KEY oluşturma.

Mesaj gönderen Bulut »

aşağıdaki kodlarda Foreign key nasıl oluşturabiliriz, selamlar.

Master table

Kod: Tümünü seç

      sorgu.Close;
        sorgu.SQL.Clear;
        sorgu.SQL.Add('CREATE TABLE "kurstan" ("sira" INTEGER NOT NULL,');
        sorgu.SQL.Add('"kurskd" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"kursadi" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"bastar" date,');
        sorgu.SQL.Add('"bittar" date,');
        sorgu.SQL.Add('"teoriksure" integer,');
        sorgu.SQL.Add('"prakitsure" integer,');
        sorgu.SQL.Add('"topsure" integer,');
        sorgu.SQL.Add('"ogretmenadi" VARCHAR(25) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('PRIMARY KEY ("sira"))');
        sorgu.Prepare;
        sorgu.ExecSQL; 
        sorgu.Close;
        sorgu.SQL.Clear;         
detail olarak düşünülen tablo

Kod: Tümünü seç

        sorgu.Close;
        sorgu.SQL.Clear;
        sorgu.SQL.Add('CREATE TABLE "kursiyer" ("sira" INTEGER NOT NULL,');
        sorgu.SQL.Add('"kurssirano" integer NOT NULL,');
        sorgu.SQL.Add('"tckimlikno" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"adisoyadi" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"babaadi" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"anaadi" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"dyeri" VARCHAR(25) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"dtarihi" date,');
        sorgu.SQL.Add('"cinsiyeti" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"mhali" VARCHAR(10) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"il" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"ilce" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"mahalle" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"ciltno" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"ailesira" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"kutuksira" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"verilisyeri" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"verilistarihi" date,');
        sorgu.SQL.Add('"verilisnedeni" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"evadresi" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"isadresi" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"evtel" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"ceptel" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"istel" VARCHAR(15) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"eposta" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"webadresi" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"meslek" VARCHAR(50) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"ogrenimdurumu" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"kurstarihi" VARCHAR(30) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('"kurszamani" VARCHAR(25) CHARACTER SET WIN1254 COLLATE PXW_TURK,');
        sorgu.SQL.Add('PRIMARY KEY ("sira"))');
        sorgu.Prepare;
        sorgu.ExecSQL;
        sorgu.Close;
        sorgu.SQL.Clear;  
detail tablonun kurssirano alani foreign key olarak master tabloda sira isimli alana bağlanacak. Yukarıdaki kod bloğuna nasıl bir kod eklemeliyim.

Selamlar...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Basitçe master (kurstan) tablosuna FK ekleme;

Kod: Tümünü seç

...
ALTER TABLE kurstan ADD CONSTRAINT FK_sira FOREIGN KEY (sira) REFERENCES kursiyer (kurssirano)
...
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Bulut
Üye
Mesajlar: 30
Kayıt: 11 Mar 2005 03:09

Mesaj gönderen Bulut »

Kod: Tümünü seç

           sorgu.Close;
           sorgu.SQL.Clear;
           sorgu.SQL.Add('ALTER TABLE kurstan ADD CONSTRAINT FK_sira FOREIGN KEY (sira) REFERENCES kursiyer (kurssirano)');
           sorgu.Prepare;
           sorgu.ExecSQL;
yazdıgımda
Table unknown
KURSTAN
diye hata mesajı veriyor
Kurstan dosyasını üst tarafta ouluşturmuş olmama rağmen.
Saygılar...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBExpert gibi bir araçla tabloların olup olmadığını kontrol et. Çift tırnak içinde yazdığından adı küçük harfli kalmış olmasın :roll:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla