dal 2015 - visita n. 660
Le transazioni
Le transazioni

 

Le transazioni

Una transazione è un gruppo sequenziale di operazioni di manipolazione del database che viene eseguita come se si trattasse di una unità di lavoro unica. In altre parole, una transazione non sarà mai completa se ogni singola operazione all'interno del gruppo non è riuscita. Se una qualsiasi delle operazioni all'interno della transazione non riesce, l'intera transazione avrà esito negativo.

In pratica, per formare una transazione occorre associare un insieme di query formandone un unico gruppo.


Proprietà delle transazioni

Le transazioni hanno le seguenti quattro proprietà a cui ci si riferisce con l'acronimo ACID:

In MySQL le transazioni iniziano con l'istruzione BEGIN WORK e terminano o con un COMMIT o con un ROLLBACK. I comandi SQL contenuti tra le istruzioni iniziali e finali formano quindi il corpo della transazione.


COMMIT e ROLLBACK

Sono le 2 parole chiave che si utilizzano quando si lavora con le transazioni.

È possibile controllare il comportamento di una transazione impostando la variabile di sessione AUTOCOMMIT. Se AUTOCOMMIT è impostato a 1 (impostazione predefinita) allora ogni istruzione SQL (all'interno di una transazione o meno) è considerata una transazione completa e viene conclusa automaticamente quando finisce. Quando AUTOCOMMIT è invece impostata a 0, con il comando SET AUTOCOMMIT = 0, la successiva serie di istruzioni viene considerata come una transazione e nessuna attività viene considerata conclusa fino a quando non viene emesso un esplicito COMMIT.

Questi comandi possono essere eseguiti in PHP tramite la funzione mysql_query().


Esempio generale di transazione

Questa sequenza di eventi è indipendente dal linguaggio di programmazione utilizzato; il percorso logico può essere creato con qualsiasi linguaggio utilizzato per creare l'applicazione.

È possibile eseguire questi comandi in PHP con la funzione mysql_query().


Tipi di tabelle per transazioni sicure

Non è possibile utilizzare le transazioni con le normali tabelle, il loro uso non sarebbe sicuro e garantito. Se si prevede di utilizzare le transazioni nella programmazione MySQL è necessario creare le tabelle in un modo speciale. Ci sono molti tipi di tabelle che supportano bene le transazioni, ma uno dei più popolari è InnoDB.

Il supporto per le tabelle InnoDB richiede uno specifico parametro durante la compilazione dei sorgenti MySQL. Se la versione di MySQL in vostro possesso non ha il supporto per InnoDB, chiedete al vostro fornitore di servizi Internet per ottenere una versione di MySQL con il supporto per le tabelle InnoDB o scaricate ed installate la distribuzione binaria MySQL-Max per Linux/UNIX o Windows e lavorate con quel tipo di tabelle in un ambiente di sviluppo.

Se la vostra installazione di MySQL supporta le tabelle InnoDB è sufficiente aggiungere la definizione TYPE=InnoDB durante la creazione della tabella. Ad esempio, il codice seguente crea una tabella InnoDB chiamato tcount_tbl:

# mysql -u root -p password;

Dopo l'immissione della password di root:

mysql> use DBPROVA;
Database changed
mysql> create table tcount_tbl
    -> (
    -> prova_author varchar(40) NOT NULL,
    -> prova_count INT
    -> ) TYPE=InnoDB;
Query OK, 0 rows affected (0.05 sec)

Per saperne di più collegarsi a: InnoDB

È possibile utilizzare altri tipi di tabelle come GEMINI o BDB, ma occorre verificare se l'installazione in uso supporta questi due tipi.


















Introduzione
Installazione
Amministrazione
MySQL e PHP
Gestione database
Tipi di dati
Gestione tabelle
Query insert
Query select
Query update e delete
Clausola where
Clausola like e regexp
Clausola order by
Clausola join
Il valore NULL
Le transazioni
Il comando ALTER
Gli indici
Tabelle temporanee e cloni
Info sul database
Generazione di sequenze
Gestione dei duplicati
Iniezione di codice SQL
Export / Import



Conservare la gloria è più difficile che conquistarla.
Proverbio

Valid CSS!
pagina generata in 0.001 secondi