Visualizzazione risultati 1 fino 2 di 2

Discussione: mysql foreign key

  1. #1
    Guest

    Predefinito mysql foreign key

    ciao...

    sto facendo qualche prova in locale con le foreign key...
    qui su altervista non dovrebbero poter funzionare visto che il db non è innoDB...

    non ho mai usato le foreign key prima d'ora... e sto facendo qualche prova iniziale...
    ho creato le tabelle:

    Codice:
    CREATE TABLE parent (id INT NOT NULL,
                         PRIMARY KEY (id)
    ) ENGINE=INNODB;
    
    CREATE TABLE child (id INT, parent_id INT,
                        INDEX par_ind (parent_id),
                        FOREIGN KEY (parent_id) REFERENCES parent(id)
                          ON UPDATE CASCADE ON DELETE CASCADE
    ) ENGINE=INNODB;
    la colonna parent_id nella tabella child fa riferimento alla colonna id nella tabella parent.
    da phpmyadmin le vedo, e vedo anche la relazione...
    quindi tutto ok...


    ora però non so bene come sfruttare questa relazione, o forse non ho capito come dovrebbero funzionare le cose...
    mi spiego:
    • se inserisco una riga nella tabella parent, e quindi valorizzo il campo parent.id, questo assume il suo valore senza alcuna ripercussione sulla tabella child
    • se invece provo a valorizzare il campo child.parent_id ottengo un errore perchè il campo ha il vincolo della fk.



    a questo punto mi chiedo come faccio a valorizzare il campo child.parent_id




    /** edit **/

    risolto...
    perchè sia possibile inserire un valore deve essere un valore presente nel campo della tabella padre cui punta la fk
    Ultima modifica di stepone : 15-01-2012 alle ore 15.20.32

  2. #2
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da stepone Visualizza messaggio
    ...
    /** edit **/

    risolto...
    perchè sia possibile inserire un valore deve essere un valore presente nel campo della tabella padre cui punta la fk
    Per inciso, è proprio questo il concetto di chiave esterna (o "foreign key" che dir si voglia).

    Una cosa per le tue prove in locale: quell'"ON DELETE CASCADE" che hai messo potrebbe provocare effetti disastrosi sul tuo database. Significa che deciderai di cancellare un record dalla tabella "parent", saranno cancellati automaticamente anche tutti i record in "child" che hanno il valore cancellato nel campo parent_id!

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •