Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    91

    insert foreing key php mysql

    ciao a tutti, magari è una domanda stupida ma sono un po'.... :master:
    nel momento in cui io ho una tabella Prodotto con idProdotto collegata alla tabella TipoProdotto con il suo idTipoProdotto e una chiave esterna TipoProdotto.Prodotto_idProdotto collegata al campo idProdotto di Prodotto, come faccio a realizzare l'inserimento, o copia automatico??
    Ho visto che con gli indici si posso fare le cose tipo CASCADE on UPDATE e on DELETE, ma perchè non on INSERT?

    Io ho bisogno che nel momento in cui inserisco un nuovo TipoProdotto da un form, si crei anche l'entità "padre" Prodotto e che l'id di questa entità vada automaticamente nella mia tabella TipoProdotto in TipoProdotto.Prodotto_idProdotto come chiave esterna per creare il collegamento. non ditemi che devo fare una cosa tipo

    insert into Prodotto bla bla
    poi select idProdotto dall'ultimo prodotto che ho inserito, metterlo in una variabile

    insert into TipoProdotto (Prodotto_idProdotto)
    values la variabile

    perchè sinceramente credo che ci sia un modo più intelligente...solo che non lo so...

    grazie a tutti

  2. #2
    ...ho cercato anch'io per un periodo una soluzione migliore ... anche sul forum di mysql.com , ma non ho trovato alcun metodo, semplicemente perchè una chiave esterna deve fare riferimento ad un elemento esistente nella tabella "padre", quindi di conseguenza prima và riempita la tabella padre e poi quella figlio....

    ...la speranza anche per me è sempre quella che arrivi qualcuno con una soluzione diversa...

  3. #3
    ...siccome parli di id, se nell'attributo id_prodotto usi un'auto_increment poi puoi recuperarlo automaticamente con la funzione mysql_insert_id(); per poi inserirlo nella tabella figlio...

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Tanto per cominciare dovresti spiegare come sia possibile che la chiave esterna sia sui tipi prodotto verso i prodotti e non viceversa.
    In secondo luogo non è possibile fare quello che chiedi, visto che le insert si fanno su una tabella alla volta. I constraint di integrità referenziale servono sugli aggiornamenti e cancellazioni.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    91
    VVoVe:
    dai!! ma mi sembra proprio una cosa assurda
    un mio amico, che lavora però con oracle, ieri mi accennava all'uso dei trigger, ho visto che mysql dal 5 in poi li supporta, ma speravo ci fosse una soluzione più snella...
    vuoi che proprio nessuno possa venirci incontro per questo problema?
    aspettiamo fiduciosi
    grazie cmq per l'indicazione

  6. #6
    ...davo per scontato il discorso, non mi ero accorto! spero per ignarus che si tratti di una distrazione nello scrivere sennò c'è un po' di confusione in testa....

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    91

    purtroppo non era una distrazione....in effetti mi sa proprio che avete ragione...adesso rivedo un attimo lo schema, ma penso che anche una volta corretto quando andrò a fare gli inserimenti il problema sarà analogo (anche se spererei tanto di no )
    grazie a tutti!!!!

  8. #8
    in realtà non è che sia un problema, alla fine invece di una insert ne usi due in maniera sequenziale. Risolta la svista nello schema non avrai casini nell'inserimento, l'unica cosa è focalizzare bene quali sono e come avvengono le relazioni tra le tabelle...

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da ignarus
    anche una volta corretto quando andrò a fare gli inserimenti il problema sarà analogo (anche se spererei tanto di no )
    E due... mi spieghi come puoi LOGICAMENTE pensare che inserendo una riga su una tabella se ne possa inserire una in automatico su un'altra tabella con dati diversi? Da dove dovrebbe prenderseli il db questi dati?

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    91
    ma chi ha mai detto con dati diversi??
    adesso che ho corretto il problema di prima nel momento in cui un utente inserirà un nuovo prodotto il database genererà un codice per tale prodotto (idSottoProdotto) poi glielo farò tirare fuori e andrò a mettere lo stesso codice in Prodotto.idSottoProdotto. Se non c'è soluzione migliore farò due insert di fila come suggeritomi da t1t con in mezzo l'estrazione del codice...

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.