📁
Forum per Webmaster
SQL

Integrità dei dati e gestione delle transazioni

Il linguaggio SQL fornisce un insieme di comandi per salvaguardare l'integrità dei dati contro situazioni di malfunzionamento del sistema o di danneggiamento dei dati:

  • LOCK TABLE e UNLOCK TABLE per limitare e ripristinare l'accesso di determinati utenti a una tabella;
  • RECOVER TABLE che consente di recuperare una tabella da una copia di
    sicurezza, nel caso in cui si verifichi un'interruzione anomala del processo di elaborazione;
  • CHECK TABLE per controllare la corrispondenza dei dati di una tabella con i suoi indici;
  • REPAIR TABLE per ricostruire gli indici di una tabella nel caso in cui il controllo eseguito con il precedente comando Check Table non sia andato a buon fine.

Un altro aspetto importante legato all'integrità dei dati è costituito dalla gestione delle transazioni. Una transazione SQL è una serie di operazioni eseguite su un database (tipicamente manipolazioni sulle righe delle tabelle) che devono essere eseguite in modo completo per considerare corretta l'elaborazione.
Quindi è un insieme di operazioni considerate come un'unità logica di lavoro da eseguire.

Quando si vuole eseguire una serie di operazioni che consideriamo facenti parte di un'unità logica di lavoro, si manda il comando BEGIN TRANSACTION. Questo comando provoca tutte le modifiche previste alle righe delle tabelle del database, bloccandone la possibilità di modifica agli altri utenti, che possono comunque vederne il contenuto. Quando si è in grado di decidere che la serie di operazioni ha prodotto i risultati desiderati, la transazione può essere confermata nella sua terminazione con il comando COMMIT. Se invece i risultati ottenuti alla fine della transazione non corrispondono a quelli attesi, la transazione viene annullata con il comando ROLLBACK: questa istruzione ripristina il database allo stato in cui era prima dell'inizio del comando BEGIN.

Generalmente le transazioni vengono utilizzate per mantenere l'integrità dei dati quando è necessario aggiornare dei record contenuti in una o più tabelle.
Se per esempio si accettano ordini dai clienti occorre effettuare operazioni di scarico dal magazzino: se per la quantità esistente dei prodotti richiesti dopo l'aggiornamento diventasse negativa, non sarebbe possibile soddisfare gli ordini. Occorrerà quindi utilizzare il comando Begin Transaction per iniziare l'aggiornamento delle righe nella tabella; se uno degli aggiornamenti successivi ha esito negativo, occorre utilizzare il comando Rollback per annullare gli aggiornamenti effettuati. Con il comando Commit invece si può confermare la transazione dopo che anche l'ultimo aggiornamento ha avuto esito positivo.

Argomenti nella stessa categoria