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

    [Mysql] controllare dati inseriti

    Buongiorno a tutti mediante un form raccolgo dati che devono essere inseriti in tre tabelle diverse in tutte e tre le tabelle c'e' un campo idutente per inserirli procedo in questo modo inserisco i dati nella prima tabella che ha un campo auto increment ricavo l'idutente assegnato e poi salvo i dati nelle altre due tabelle usando l'idutente che ho ricavato dalla prima tabella, il problema e' che delle volte, anche se raramente, mi ritrovo con i dati registrati correttamente nella prima tabella ma nelle altre no oppure in due sole tabelle.
    Secondo voi dove puo stare il problema e come posso fare per far si che i dati vengano registrati su tutte le tabelle?
    Grazie fin da ora

  2. #2
    Ciao,
    sicuramente dovresti, tramite exception / Error Handling, individuare l'errore occorso in fase di insert delle tre tabelle. Una volta individuato l'errore, correggerlo

    Mik

  3. #3
    Purtroppo l'errore capita sporadicamente, che posso dire una volta la mese, dato che sto rifacendo lo script volevo sapere se c'e' qualche modo migliore per fare l'insert sulle tre tabelle.

  4. #4

  5. #5
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    La logica è discutibile, per non dire da evitare. Fermo che senza avere il codice di errore è difficile fare diagnosi, l'ipotesi è un problema di duplicazione di una chiave primaria delle altre due tabelle.
    Non è chiarissimo, tra l'altro, come fai a leggere il campo autoincrementante (cosa che, in generale, non è possibile fare in modo affidabile, in un ambiente che supponiamo concorrente).

    Tornando al merito i miei suggerimenti sono
    - verificare se esistono chiavi primarie sulle tabelle 2 e 3
    - togliere la chiave autoincrementante (o aggiungerne una chiave "vera" gestita dall'applicazione), sicchè sia possibile inserire i dati con pieno controllo nelle 3 tabelle
    - aggiungere un trigger sulla tabella 1 AFTER INSERT che copi i dati nelle altre due (valgono le medesime considerazioni sulle chiavi)

  6. #6
    Scusate per il ritardo della risposta comunque nella prima tabella c'e' un campo idutente e un campo nomeutente (non possono esserci due nomeutente uguali)
    quindi inserisco i dati nella prima tabella con l'autoincrement (nelle altre due non c'e') poi con una query richiamo l'idutente di quel determinato nomeutente e inserirsco i dati nelle altre due tabelle con l'idutente che mi sono ricavato dalla prima.
    Un po contorto ma spero di essermi spiegato

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