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

    Mysql come avviene l'incremento dell'id

    Il problema è questo: ho tre tabelle delle quali una serve a mettere in relazione le altre due. La tabella relazionale ovviamente inserisce un id riferito alla prima ed un id riferito alla seconda. Le prime due tabelle hanno funzioni che permettono di eliminare dei records quindi se utilizzo queste funzioni capita che gli id rimanenti non siano più incrementati di uno. Per esempio la prima tabella da id come 1 2 3 4 ecc.. può diventare 1 3 4 ecc.. se rimuovo in secondo record, la seconda tabella da 1 2 3 4 ecc.. può diventare 1 2 4 ecc.. togliendo il terzo record. La tabella relazionale fa inserimenti del tipo 1-4 , 2-5 ecc... Siccome non trovo il modo di eliminare le righe di questa tabella che fanno riferimento ad id non più presenti il problema non ci sarebbe, ma mi viene il dubbio che ad un certo punto l'inserimento incrementale degli id sulla prima e la seconda vada a compensare la numerazione lasciata vuota, per esempio se manca l'id 2 mysql attribuisce al nuovo record inserito sulla prima tabella l'id 2 che però fa riferimento ad un nuovo record, per cui l'associazione 2-5 è ancora presente.
    Si è capito? Inizio ad avere qualche dubbio, se non è chiaro cerco di spiegarmi meglio

  2. #2
    le due tabelle main hanno un id incrementale (ognuno di essi va per conto suo), mentre la tabella che le relaziona (tabella cross) non ha id incrementali (semplicemente riporta quelli delle tabelle main), per cui il problema non esiste. semplicemente, quando cancelli un record in una delle due main, cancella anche il corrispondente (o i corrispondenti) record nella tabella cross, altrimenti ti ritrovi con dei record orfani.

  3. #3
    Ti ringrazio per la risposta che mi consola, ma sai che non ne sono proprio sicuro che sia così? Come fa mysql a sapere che c'è un legame tra le tabelle main e la cross ed andarmi a rimuovere automaticamente i records nella cross dove gli id delle main sono spariti? Cioè se non imposto io una query adeguata alla rimozione di tutto mi sembra molto strano che avvenga in automatico, forse bisogna impostare qualche relazione che non ho messo?

  4. #4
    sì, si possono impostare le relazioni per le cancellazioni (ma anche gli aggiornmaneti) a cascata, ma non so come si faccia con MySql

  5. #5
    Per legare le tabelle si usano le "foreign key", per la cancellazine devi dichiarare nella tua FK la clausola ON DELETE CASCADE, una rapida ricerca con google ti spiega tutto

  6. #6
    Grazie alle vostre indicazioni ho risolto, alla fine ho potuto far tutto con phpmyadmin che mi ha reso un po' più semplice l'operazione.

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.