English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
TRANSACTION (transazione) è un'unità logica del processo di esecuzione del sistema di gestione della base di dati (DBMS), costituita da una sequenza limitata di operazioni di database.
Le transazioni di database di solito contengono una sequenza di operazioni di lettura/scrittura sul database. Include due scopi principali:
Fornisce un metodo per ripristinare una sequenza di operazioni di database da un errore a uno stato normale, fornendo anche un metodo per mantenere la coerenza del database anche in condizioni di eccezione.
Quando più applicazioni accedono in modo concorrente alla base di dati, è possibile fornire un metodo di isolamento tra queste applicazioni per prevenire che le loro operazioni si interferiscano a vicenda.
Quando un'operazione viene presentata al sistema di gestione della base di dati (DBMS), il DBMS deve garantire che tutte le operazioni dell'operazione siano completate con successo e i loro risultati siano conservati permanentemente nel database. Se alcune operazioni dell'operazione non sono state completate con successo, tutte le operazioni dell'operazione devono essere roll back, tornando allo stato prima dell'esecuzione dell'operazione; contemporaneamente, l'operazione non ha alcun impatto sul database o sulle altre operazioni, tutte le operazioni sembrano essere eseguite in modo indipendente.
Una transazione ha quattro attributi standard, solitamente abbreviati in ACID:
Atomicità (Atomicity): Una transazione viene eseguita come un tutto, e le operazioni sul database contenute in essa devono essere eseguite o non eseguite tutte.
Coerenza (Consistency): Una transazione deve garantire che lo stato del database passi da uno stato consistente a un altro stato consistente. Lo stato consistente significa che i dati nel database devono soddisfare le restrizioni di integrità.
Isolamento (Isolation): Quando più transazioni vengono eseguite in contemporanea, l'esecuzione di una transazione non dovrebbe influenzare l'esecuzione di altre transazioni.
Persistenza (Durability): Le modifiche del database effettuate da una transazione confermata devono essere conservate permanentemente nel database.
Qualcuno deve utilizzare la moneta elettronica nel negozio per acquistare qualcosa del valore di 100 yuan, e questo include almeno due operazioni:
L'account di questa persona diminuisce di 100 yuan.
L'account del negozio aumenta di 100 yuan.
Un sistema di gestione del database che supporta le transazioni deve garantire che entrambe le operazioni (l'intera "transazione") siano completate o annullate insieme, altrimenti potrebbe verificarsi la scomparsa inutilizzata di 100 yuan o situazioni simili.
Utilizza i seguenti comandi per controllare le transazioni:
BEGIN TRANSACTION:Inizia una transazione.
COMMIT:Conferma della transazione, o può essere utilizzato il comando END TRANSACTION.
ROLLBACK:Roll back della transazione.
I comandi di controllo delle transazioni si utilizzano solo con INSERT, UPDATE e DELETE. Non possono essere utilizzati durante la creazione o la cancellazione di tabelle, poiché queste operazioni vengono automaticamente confermate nel database.
Una transazione può essere avviata utilizzando il comando BEGIN TRANSACTION o semplicemente BEGIN. Questo tipo di transazione di solito continua ad eseguire fino a quando non incontra il comando COMMIT o ROLLBACK successivo. Tuttavia, la gestione delle transazioni può essere annullata anche quando il database viene chiuso o si verificano errori. Ecco una sintassi semplice per avviare una transazione:
BEGIN; O BEGIN TRANSACTION;
Il comando COMMIT viene utilizzato per salvare le modifiche chiamate dalla transazione nel database, ovvero confermare la transazione.
La sintassi del comando COMMIT è la seguente:
COMMIT; O END TRANSACTION;
Il comando ROLLBACK viene utilizzato per annullare i comandi di transazione non salvati nel database, ovvero il roll back della transazione.
La sintassi del comando ROLLBACK è la seguente:
ROLLBACK;
Crea la tabella COMPANY (Scarica il file SQL di COMPANY ),i dati contenuti sono i seguenti:
w3codeboxdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (7 righe)
Ora, iniziamo una transazione e eliminiamo le registrazioni con age = 25 dal tavolo, infine usiamo il comando ROLLBACK per annullare tutte le modifiche.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; ROLLBACK;
Controlla la tabella COMPANY, ci sono ancora le seguenti registrazioni:
id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000
Ora, iniziamo un'altra transazione e eliminiamo le registrazioni con age = 25 dal tavolo, infine usiamo il comando COMMIT per confermare tutte le modifiche.
w3codeboxdb=# BEGIN; DELETE FROM COMPANY WHERE AGE = 25; COMMIT;
Controlla la tabella COMPANY, le registrazioni sono state eliminate:
id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 3 | Teddy | 23 | Norway | 20000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 (5 righe)