Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344

    PHP+MySQL: eliminazione di utente e dati correlati

    Situazione:

    Tabella: ana_utenti
    Campi: id_utente, cognome, nome

    Tabella: automobili
    Campi: id_automobile, descrizione, id_utente

    Relazione uno-a-molti tra ana_utenti.id_utente e automobili.id_utente che lega più automobili ad un singolo utente.

    Arriva il momento che devo eliminare un utente. MySQL elimina in automatico tutte le automobili con id_utente che ho eliminato? E' un'opzione? Oppure devo fare un'eliminazione da PHP per tutte le tabelle correlate?

    Grazie

  2. #2
    ciò che chiedi si chiama integrità referenziale.

    MySQL tramite il motore (InnoDB) fornisce queste funzionalità, in particolare devi creare delle foreign keys sulle colonne che ti interessano e decidere cosa fare in caso di eliminazione.

    Dopodichè MySQL farà tutto il lavoro sporco al posto tuo
    « Se nella prima mezz'ora non capisci chi è il pollo, allora il pollo sei tu. » [Thomas "Amarillo Slim" Preston, campione del mondo di poker]

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ..purtroppo però non tutti i provider danno innoDB come motore "possibile"..
    in quel caso devi fare a manovella..

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Infatti ricordavo qualcosa del genere. Peccato che praticamente tutti quelli in hosting forniscano MyISAM.

    Per cui deduco che sia il caso di pensare subito a fare il controllo per tutte le tabelle...

  5. #5
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    certo.. ma non è una cosa complicatissima, anche se di sicuro più complicata di "ON DELETE CASCADE"..

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    No certo non mi preoccupa qualche riga in più di codice, ma è meglio saperlo prima di iniziare un progetto...

    Grazie
    ciao

  7. #7
    Io eseguo sempre due query, nel caso specifico eliminazione di tutte le auto dell'utente ed infine eliminazione dell'utente.

  8. #8
    Originariamente inviato da aasmdaa
    Infatti ricordavo qualcosa del genere. Peccato che praticamente tutti quelli in hosting forniscano MyISAM.
    Davvero??? Ma sono fuori di testa??? InnoDB sarà lo storage engine predefinito in MySQL 6 e prima o poi MyISAM verrà sostituito da Aria. Sarebbe bello se gli hoster avessero una vaga idea di cosa sono e cosa fanno i programmi che sono installati sui loro server...

    Comunque se cerchi hosting innodb ti escono diversi servizi.

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.