рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Commit e Rollback, ovvero come limitare i danni

Commit e Rollback, ovvero come limitare i danni - раздел Программирование, Appunti sui DataBase Relazionali e sul linguaggio SQL In Tutti I Database Relazionali Minimamente Decenti Esistono Due Comandi Fond...

In tutti i database relazionali minimamente decenti esistono due comandi fondamentali che rispondono per l' appunto al nome di commit e rollback. questi due comandi provvedono a fare in modo che una determinata operazione venga effettuata come un tutto unico o che non venga effettuata per niente. vediamo di capire cosa significa.

Mettiamo che voi stiate gestendo il database di una banca e che dobbiate effettuare un bonifico bancario; questa operazione in realtà si divide in almeno due distinte operazioni:

1. aumentare il saldo del conto corrente del destinatario della cifra in esame

2. diminuire il saldo del conto corrente del mittente della stessa cifra più quella dovuta per le commissioni

ora, cosa succederebbe se a metà dell' operazione il sistema avesse dei problemi (stile corrente che salta, un errore logico come la mancanza del record del destinatario, un processore fuso per il troppo calore,un impiegato impazzito con grosso martellone che picchia sul server)? a seconda dell' ordine in cui le effettuate potete avere i seguenti risultati:

1. i soldi vengono tolti dal cc del mittente e non arrivano in quello del destinatario: risultato il destinatario del bonifico vuole il vostro sangue

2. i soldi NON vengono tolti dal cc del mittente, arrivano in quelli del destinatario e la banca ce li rimette: risultato dovete cercarvi in fretta un'altro lavoro DOPO averli sborsati voi

entrambi i risultati non brillano per piacevolezza, ma per fortuna vi vengono incontro i due comandi suddetti. come funzionano?

Quando si fa qualcosa che deve venire gestito come un tutt' uno si inizia la procedura con una istruzione BEGIN TRANSACTION, che indica il punto di inizio del nostro codice "a rischio" . a questo punto il nostro database non esegue più le variazioni direttamente sul disco ma in una particolare area temporanea (normalmente in memoria) e se la tiene parcheggiata lì finché non sente un comando COMMIT. a quel punto in un' unica soluzione fa TUTTE le variazioni che ha precalcolato in contemporanea. nel caso qualcosa andasse storto l' intera transazione andrebbe persa e quindi il bonifico non verrebbe fatto, sicuramente una situazione meno spiacevole di quella citata prima (anche perché può venire rifatto). E' inoltre possibile forzare questo avvenimento tramite l' istruzione ROLLBACK nel caso che il problema sia di tipo software (esempio ho gli estremi del mittente ma in tabella non esiste il destinatario, quindi sebbene sia già partito a togliere i soldi dal primo non posso metterli sul secondo) . un tipico esempio di gestione commit-rollback può essere la seguente:

BEGIN TRANSACTION; // inizio della transazione

USE banca1; // utilizza il database di nome BANCA1

UPDATE conticorrenti // aggiorna la tabella dei conti correnti

SET saldo = saldo + 1000000 // aggiungendo un milione al saldo

WHERE ccn = 181818 // del conto corrente numero 181818

ON ERROR ROLLBACK; // in caso di un qualunque errore effettua un rollback ed annulla tutto

USE banca2; // utilizza il database di nome BANCA2

UPDATE conticorrenti // aggiorna la tabella dei conti correnti

SET saldo = saldo - 1000000 // sottraendo un milione al saldo

WHERE ccn = 161616; // del conto corrente numero 161616

ON ERROR ROLLBACK; // in caso di un qualunque errore effettua un rollback ed annulla tutto

COMMIT; // effettua tutta la transizione in una volta

attenzione, l' esempio fatto sopra e' un classico esempio di più ISTRUZIONI inserite in un' unica transazione , ma in genere se non specifichiamo nulla ogni singola istruzione viene gestita come una transazione a se stante, pertanto se durante l' esecuzione della nostra update su due milioni di campi crolla il sistema, le procedure di ripristino provvederanno a fare si che NESSUNA modifica della due milioni che stavamo facendo compaia, il che e' incredibilmente preferibile al non sapere su quali record la modifica e' già stata apportata e su quali no

– Конец работы –

Эта тема принадлежит разделу:

Appunti sui DataBase Relazionali e sul linguaggio SQL

Indice... Introduzione sui database Cos e un database Piccola storia dei database assolutamente incompleta...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Commit e Rollback, ovvero come limitare i danni

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Невидимые планеты
Не менее интересны приводимые в письмах Е.И. Рерих и в «Письмах Махатм» сведения о том, что в Солнечной системе на самом деле гораздо больше планет, чем это известно нашим астрономам. Так, в «Космо

Piccola storia dei database assolutamente incompleta
Probabilmente il più glorioso (ed a tutt' oggi utilizzato) antenato dei database relazionali odierni può essere identificato con la sana e vecchia agenda telefonica. in effetti penso

I Database Relazionali
allora cosa sono questi famigerati Database relazionali? il concetto che sta alla base è , come spesso succede nell' informatica, molto meno "strampalato" di quello che si pensa: i

SQL questo sconosciuto
Abbiamo appena finito di dire che uno dei requisiti fondamentali per poter utilizzare un database relazionale e' avere un "linguaggio" che ci permetta di interrogarlo in maniera opportuna

I Semafori , ovvero la gestione della multiutenza
Chiariamo subito una cosa: già linguaggi come Clipper avevano strumenti per gestire la multiutenza sui database, ma in quel caso ancora era completamente demandato al programmatore il fatto

Basi del comando SELECT
Come abbiamo detto prima nell' introduzione, nei database relazionali le informazioni sono contenute in tabelle. Un esempio di tabella puo' essere rappresentato dalla tabella dei dati degli impiega

Selezione Condizionata
Per continuare la discussione sulla selezione, facciamo riferimento a questa nuova tabella di esempio TabellaStatisticheImpiegati CodiceImpiegato

Operatori Relazionali
Ci sono sei operatori relazionali in SQL, e dopo averli specificati vedremo come si usano. gli operatori sono: = Uguale <> oppure

Le Chiavi
Per prima cosa vediamo il concetto di Chiave. Una Chiave Primaria ( o primary key) e' una colonna o un gruppo di colonne che identificano in maniera univoca (singola) ogni data

Creare un Join
Lo scopo delle Chiavi appena discusse e' quella di correlare i dati attraverso le tabelle, senza dover in questo modo ripetere su tutte le tabelle i dati più frequenti, il che e' il vero sco

Creare un Join
Lo scopo delle Chiavi appena discusse e' quella di correlare i dati attraverso le tabelle, senza dover in questo modo ripetere su tutte le tabelle i dati più frequenti, il che e' il vero sco

Creare un Join
Lo scopo delle Chiavi appena discusse e' quella di correlare i dati attraverso le tabelle, senza dover in questo modo ripetere su tutte le tabelle i dati più frequenti, il che e' il vero sco

Funzioni di Aggregazione
In questa sezione introdurrò le cinque più importanti Funzioni di Aggregazione: SUM, AVG, MAX, MIN, e COUNT. Queste funzioni vengono chiamate Di Aggregazione perché serv

Creare Nuove Tabelle
Tutte le tabelle all' interno di un database devono venire create prima o poi. vediamo come possiamo fare. a titolo di esempio prendiamo in esame la creazione della tabella Ordini: CRE

Modificare la struttura delle tabelle
Sempre con la logica di vedere i comandi all' interno di esempi pratici, vediamo come si puo' aggiungere una nuova colonna "Prezzo" alla tabella antichita per permettere l' inserimento de

Inserire dati in una tabella
Per inserire record (righe) in una tabella si usa il seguente comando (esempio riferito alla tabella Antichita a cui e' appena stato aggiunto il prezzo) : INSERT INTO Antichita VALUES

Cancellare dati da una tabella
Adesso proviamo a cancellare la riga di dati che abbiamo appena inserito dalla tabella: DELETE FROM Antichita WHERE Oggetto = 'Ottomana'; Ma, in questo caso

Modifica dei dati
Proviamo ad aggiornare il valore di un prezzo in un record dove questo non e' stato inserito. ricordiamoci che in questo caso non si tratta di un inserimento ma di una modifica del valore NULL prec

Sommario della Sintassi - Solo per veri masochisti
Qui potete trovare le forme generalizzate dei comandi discussi in questi appunti, più alcuni aggiuntivi che possono risultare comodi e la cui spiegazione e' data a latere. ATTENZI

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги