Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442

    [MySql] Garantire consistenza dati

    Ciao, ho creato un db con mysql con alcune tabelle. Questo db viene creato all'avvio dell'applicazione *se non esiste*, tabelle incluse.
    Ora se però in qualche tabella viene cancellato un attributo, durante l'esecuzione del programma si possono verificare chiaramente comportamenti imprevisti.
    E' possibile gestire questa cosa?
    Grazie.

    EDIT: ok ho visto che si possono ottenere informazioni sulle tabelle ed eventualmente gestire la cosa.
    Potete cancellare se volete :-)
    Ultima modifica di Jamie04; 29-05-2014 a 20:39

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Non ho capito né il problema né la soluzione, quindi sono contento che tu abbia risolto

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    442
    Ho un'app java che crea il database e le tabelle all'avvio, se questo non esiste, tramite l''istruzione mysql CREATE DB IF NOT EXISTS.
    Chiaramente queste tabelle vengono utilizzate in quache modo dall'applicazione, per inserimento e modifica di dati.
    L'applicazione si aspetta di inserire/modificare un certo numero di attributi quando fa un insert o un update.
    Es. ho la tabella Ordini che ha come campi, id_scontrino, prodotto, prezzo, quantità, etc.
    Ora se qualcuno va a modificare la tabelle in qualche modo (scenario un po' assurdo ok), per esempio togliendo il campo prodotto,quando apro l'applicazione l'istruzione CREATE DB IF NOT EXISTS si preoccupa solo di vedere se le tabelle sono esistenti ma non di controllarne l'integrità. Ecco da dove nasce il problema.
    La soluzione, o quella che credo lo sia, consisterebbe nel mettere un controllo all'avvio che verifichi l'esistenza di tutti gli attributi e gestire in qualche modo l'eventuale mancanza.
    Ma è una vera sottigliezza, nel senso che in uno scenario reale nessuno si mette ad alterare una tabella...di solito :-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2014
    residenza
    Genova, presenza costante a Milano
    Messaggi
    100
    Sì se il senso è solo che qualcuno con il permesso SUPER potrebbe impazzire e mettersi a fare dei danni, è uno sbattimento abbastanza inutile

    Se non sei sicuro della struttura iniziale del database (perché non sai per esempio quale versione dell'applicazione era installata prima) ha molto più senso. MariaDB supporta una sintassi del tipo:

    ALTER TABLE ... ADD COLUMN IF NOT EXISTS nome_colonna ...

    https://mariadb.com/kb/en/alter-table/

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.