2016-04-10 50 views
0

Verileri 2 tabloya eklemeye çalışıyorum.(Oracle) Bire bir ve Insert sorguları

CREATE TABLE tableA 
(
    primaryKeyA INT PRIMARY KEY, 
    foreignKeyB INT 
); 

CREATE TABLE tableB 
(
    primaryKeyB INT PRIMARY KEY, 
    foreignKeyA INT 
) 

ALTER TABLE tableA 
CONSTRAINT fk_tableA 
    FOREIGN KEY (foreignKeyB) REFERENCES tableB (primaryKeyB); 

ALTER TABLE tableB 
CONSTRAINT fk_tableB 
    FOREIGN KEY (foreignKeyA) REFERENCES tableA (primaryKeyA); 

nasıl bu yapılar birine INSERT verilerine hakkında gitmek ? Bunu denerseniz, bunun bir ana anahtarın eksik olduğunu söyler, bu doğrudur, ancak bu oluşturma sırasında aynı anahtara gerek kalmadan nasıl oluşturulacağımı bilmiyorum.

+0

için çalışmalıdır. Lütfen ekleme ifadenizi gönderin. – LearningPhase

+0

ÜRÜNLERE GİRİŞ ("primaryKeyA", "foreignKeyB") DEĞERLER (1,1); Bu bana yabancıKeyB eksik sinc eksik söylüyorum bana hata verecek –

+0

Henüz bu kısıtlamaya ihtiyacınız var? Her iki tablodan kaldırmak zorundasınız çünkü döngüsel bir şey gibi. A, B ve B'ye bağlı olarak bir – LearningPhase

cevap

0

Burada sahip olduğunuz çok fazla ilişki var .. bunu çözmek için bir orta tablonuz olmalıdır.

Örneğin: (üzgün, sözdizimi test edilmedi, şu anda bir DB erişim yok) Eğer "Adresler" olarak "Müşteriler" ve Tablo B Tablo A'nın düşünüyorsanız Temelde

CREATE TABLE tableA 
    (
     primaryKeyA INT PRIMARY KEY 
); 

    CREATE TABLE tableB 
    (
     primaryKeyB INT PRIMARY KEY 
); 

    CREATE TABLE tableAB 
    (
     primaryKeyA INT , 
     primaryKeyB INT 
); 

    ALTER TABLE tableAB 
    ADD CONSTRAINT pk_tableAB 
     PRIMARY KEY (primaryKeyA, primaryKeyB); 

    ALTER TABLE tableAB 
    CONSTRAINT fk_tableAB_B 
     FOREIGN KEY (primaryKeyB) REFERENCES tableB (primaryKeyB); 

    ALTER TABLE tableAB 
    CONSTRAINT fk_tableAB_A 
     FOREIGN KEY (primaryKeyA) REFERENCES tableA (primaryKeyA); 

, (

bir müşteri bir adres pek çok müşteri aynı evde yaşayan (yani birden fazla kişi) ait olabilir birçok adresleri (yani konut, Posta, vs.) sahip olabilir: basit bir örnek) için, bir durum var.

Bu, Bir Çoktan Çokya İlişkide ve diğerlerinin de belirttiği gibi, bunun için FK'ler oluşturursanız, bir "daire" ile sonuçlanırsınız ve hiçbir şey ekleyemezsiniz. Bağlantıyı "kırmanız" gerekiyor. Bunu ilişkiyi tanımlamak için bir orta tablo kullanarak yaparsınız.

Bu yardımcı olur umarım.

** Ayrıca MySQL mi? veya Oracle? .. her ikisi de olamaz;) Çözümüm her ikisi de