Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [DB2] Creazione tabelle, piccolo problema

    Salve a tutti!

    Premetto che sono studente universitario a ingegneria informatica e guardando una soluzione d'esame per la creazione di database, mi sono imbattuto in una cosa strana per me. Mi spiego, creo 2 tabelle e1 ed e2 in cui e1 ha una foreign key in e2 e viceversa. Adesso, il problema mi compare al'inserimento di dati.

    Supponiamo che voglio inserire una riga in e1, ma dato che non esiste nessun record in e2, ed percio nessuna foreign key definita, non riesco a farlo. E' sbagliato l'esempio? L'unica cosa che ho capito e' che non ho capito qualcosa .

    Il codice DDL del problema
    codice:
    CREATE TABLE e1
    (
        k1 INT NOT NULL PRIMARY KEY,
        a INT NOT NULL,
        k2 INT NOT NULL
    );
    
    CREATE TABLE e2
    (
        k2 INT NOT NULL PRIMARY KEY,
        b INT NOT NULL,
        k1 INT NOT NULL REFERENCES e1
    );
    
    ALTER TABLE e1 ADD CONSTRAINT FKR1 FOREIGN KEY (k2) REFERENCES e2;
    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    9
    Prova ad inserire prima in e2 poi in e1.
    insert into db2inst1.e2 (k2, b, k1) values ('1','2','3');

    insert into db2inst1.e1 (k1, a, k2) values('3','2','1');


    visto così al volo dovrebbe girare
    vedi un po te

  3. #3
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    non ho mai uato DB2 ma direi che puoi inserire dei record " accoppiati "

    __ e2 deve avere 1 record correlato in e1
    __ e1 deve avere 1 record correlato in e2

    __________________________________________________ ________

    per inserire una coppia di record devi togliere prima la relazione

    codice:
    ALTER TABLE e1 DROP CONSTRAINT FKR1:
    
    insert into e1 (k1, a, k2) values('3','2','1');
    
    insert into e2 (k2, b, k1) values ('1','2','3');
    
    ALTER TABLE e1 ADD CONSTRAINT FKR1 FOREIGN KEY (k2) REFERENCES e2;
    __________________________________________________ ______

    Ripeto non ho mai usato DB2 ti rispondo quindi per "sensazioni"
    e per analogia con altri DataBase




    Saluti

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da nman
    non ho mai uato DB2 ma direi che puoi inserire dei record " accoppiati "

    __ e2 deve avere 1 record correlato in e1
    __ e1 deve avere 1 record correlato in e2

    __________________________________________________ ________

    per inserire una coppia di record devi togliere prima la relazione

    codice:
    ALTER TABLE e1 DROP CONSTRAINT FKR1:
    
    insert into e1 (k1, a, k2) values('3','2','1');
    
    insert into e2 (k2, b, k1) values ('1','2','3');
    
    ALTER TABLE e1 ADD CONSTRAINT FKR1 FOREIGN KEY (k2) REFERENCES e2;
    __________________________________________________ ______

    Ripeto non ho mai usato DB2 ti rispondo quindi per "sensazioni"
    e per analogia con altri DataBase




    Saluti
    Il problema è nella definizione delle tabelle, se entrambe hanno campi NOT NULL vuol dire che dovrai sempre specificare la chiave esterna che però non hai ancora inserito e quindi non funzionerà mai, secondo me.

  5. #5
    Infatti la soluzione di nman io la chiamerei "sporca" ma l'unica che funziona in questo caso. Andro' a rompere le scatole al prof perche anche a me sembra una soluzione stranissima. Credo che ci sia qualche errore.

    Grazie per le idee.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.