FBde iki tane PK oluşturmak...

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

IBExpert'ten aldığınız görüntü örneği PK1 ve PK2 diye iki adet Birincil Anahtar / Primary Key (PK) olduğunu göstermiyor. Sadece PK nin her iki alanı da içerdiği bilgisini veriyor :wink: Alttaki DDL inde de bu açıkça görülüyor.

Kod: Tümünü seç

...
ALTER TABLE TBL_MUSTERI ADD CONSTRAINT PK_TBL_MUSTERI PRIMARY KEY (SIRANO, MUSTERIKODU);
...
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
comlekciler
Üye
Mesajlar: 58
Kayıt: 17 Nis 2006 12:35

Mesaj gönderen comlekciler »

O zaman detay tabloda FK oluştururken, master tablodan PKlerden sadece birini değil her ikisinide alarak mı FK oluşturacağız böyle bir şey mümkün olabilir mi? Demek istediğim aşağıdaki gibi bir şey söz konusu olabilir mi (deneyemedim o yüzden özür dilerim sormak zorunda kaldım internete başka bir yerden cevap yazıyorum).

Cevaplar için herkesten Allah razı olsun epey bir bilgi sahibi oldum çok teşekkürler.

Kod: Tümünü seç

/******************************************************************************/ 
/****                             Foreign Keys                             ****/ 
/******************************************************************************/ 
ALTER TABLE TBL_SIPARIS ADD CONSTRAINT FK_TBL_SIPARIS_1 FOREIGN KEY (MUSTERIKODU) REFERENCES TBL_MUSTERI (SIRANO,MUSTERIKODU) ON DELETE CASCADE ON UPDATE CASCADE 
  USING INDEX FK_MUSTERI_SIPARIS;
"Bilgisizlerin geçtikleri mevkiye yaptığı fenalığı, yüzlerce aslan bir araya gelse yapamaz" MEVLANA
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Öncelikle PRIMARY KEY konusunu tam iyi anlamak gerekiyor. Aslında adı biraz tanımıyla örtüşmüyor gibi. KEY deyince tek bir alan gibi algılanıyor galiba. Keşke SQL Scripti en baştan gönderseydin de herkesin aklını karıştırmasaydın. Zira ben ilk baştaki mesajları okuyunca: "Acaba yeni mi çıktı bu birden fazla PRIMARY KEY olayı?" falan diye düşünmüştüm. Neyse yeni çıkan birşey yok. Sadece genellikle yapılan hatalardan birisini yapmışsın. Eksik bilgi ve kavramların yanlış kullanımı.

Son sorduğun sorunun cevabı hayır. Foreign keylerin sayı ve tip (uzunluk dahil) olarak aynı olması gerekir. Yani her iki tabloda da SIRANO ve MUSTERIKODU olması (adları aynı olmayabilir) ve bu alanların foreign key tanımlamasında karşılıklı belirtilmesi gerekir.

İyi çalışmalar.
Cevapla