Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    50

    [MySQL] INSERT INTO....

    Ciao a tutti,
    ho un problema probabilmente banale....
    ho un db con 2 tabelle...
    nella prima tabella la PRIMARY KEY è AUTO_INCREMENT e fin qui tutto ok,
    il mio problema sorge nella seconda tabella poichè c'è un FK (FOREIGN KEY) che fa riferimento, ovviamente, alla PRIMARY KEY della prima tabella.
    Quando vado a popolare il mio db facendo gli insert ed arrivo alla seconda tabella nel campo della FK cosa ci metto? visto che la primary key io non la conosco e viene creata automaticamente?
    Se la primary key non fosse autoincrementante saprei gestire la chiave esterna, ma così non ho proprio idea.
    Qualcuno sa aiutarmi?
    Grazie e a presto.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Questa query

    select last_insert_id()

    lanciata subito dopo l'insert, ti restituirà il valore della colonna auto incrementante.

    In php, se può esserti utile, c'è anche la funzione mysql_insert_id()

    http://php.net/manual/en/function.mysql-insert-id.php

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    50
    In realtà sulla guida di MySql avevo letto questa opportunità... solo che l'avevo evitata pensando che non potesse essere utile al mio caso...
    ma in soldoni verrebbe una cosa del tipo:

    INSERT INTO `#__docente` VALUES('pippo'),
    INSERT INTO `#__insegnamento` VALUES('Fis', 'Tri', select last_insert_id());

    INSERT INTO `#__docente` VALUES('pluto'),
    INSERT INTO `#__insegnamento` VALUES('Ana', 'Tri',select last_insert_id());

    INSERT INTO `#__docente` VALUES('paperino');
    INSERT INTO `#__insegnamento` VALUES('Alg I', 'Tri',select last_insert_id());

    ...cioè devo alternare i vari inserimenti per trovarmi. Giusto? Altrimenti immagino non funzionerebbe!??!!

    non so se potevo postare del codice... chiedo scusa se ho sbagliato!!!
    Cmq grazie nicola per la celere risposta!!

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    INSERT INTO `#__docente` VALUES('pippo');
    set @ultimo = (select last_insert_id());
    INSERT INTO `#__insegnamento` VALUES('Fis', 'Tri', @ultimo);

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    50
    Grazie mille per l'aiuto.
    Solo una curiosità... ma come avevo scritto io era sintatticamente scorretto?
    O quella che tu mi proponi è solo una pratica più "corretta" di programmazione...
    visto che ultimo ogni volta viene sovrascritto?
    Un ultima domanda che, forse, denota la mia poco conoscenza di Mysql... ma @ ha un particolare significato?

  6. #6
    @nome_variabile denota una variabile interna allo script

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 © 2025 vBulletin Solutions, Inc. All rights reserved.