Les transaccions agrupen un conjunt de tasques en una única unitat d'execució. Cada transacció comença amb un treball específic i acaba quan totes les tasques del grup s'han completat amb èxit. Si alguna de les tasques falla, la transacció falla. Per tant, una transacció només té dos resultats: èxit o fracàs .
Exemple d'una transacció per transferir 150 $ del compte A al compte B:
1. read(A) 2. A:= A – 150 3. write(A) 4. read(B) 5. B:= B + 150 6. write(B)>
Els passos incomplets provoquen un fracàs de la transacció. Una transacció de base de dades, per definició, ha de ser atòmica, coherent, aïllada i duradora.
Aquests són coneguts popularment com ÀCID propietats. Aquestes propietats poden garantir l'execució simultània de múltiples transaccions sense conflicte.
Propietats de la transacció
- Atomicitat: El resultat d'una transacció pot ser completament satisfactori o completament infructuós. S'ha de revertir tota la transacció si una part falla.
- Coherència: Les transaccions mantenen les restriccions d'integritat movent la base de dades d'un estat vàlid a un altre.
- Aïllament: Les transaccions concurrents estan aïllades les unes de les altres, assegurant la precisió de les dades.
- Durabilitat: Un cop confirmada una transacció, les seves modificacions continuen vigents fins i tot en cas d'error del sistema.
Com implementar l'ordre de control de transaccions mitjançant SQL?
Les ordres següents s'utilitzen per controlar les transaccions. És important tenir en compte que aquestes declaracions no es poden utilitzar durant la creació de taules i només s'utilitzen amb les ordres DML com ara: INSERT , ACTUALITZACIÓ , i ELIMINAR .
Ordre COMENÇA LA TRANSACCIÓ
Indica el punt d'inici d'una transacció explícita o local.
Sintaxi:
BEGIN TRANSACTION nom_transacció ;
Ordre SET TRANSACTION
Els valors de les propietats de la transacció actual, com ara el nivell d'aïllament de la transacció i el mode d'accés, s'estableixen mitjançant la instrucció SET TRANSACTION a MySQL.
Sintaxi:
SET TRANSACCIÓ [ LLEGIR ESCRIURE | LLEGEIX NOMÉS ];
Comandament COMMIT
Si tot està en ordre amb tots els extractes d'una sola transacció, tots els canvis es registren conjuntament a la base de dades es crida compromès . L'ordre COMMIT desa totes les transaccions a la base de dades des de l'última ordre COMMIT o ROLLBACK.
Sintaxi:
COMPROMÈS;
Exemple:
Taula de mostra 1

sortida
A continuació es mostra un exemple que eliminaria aquells registres de la taula que tenen edat = 20 i després COMMIT els canvis a la base de dades.
Consulta
DELETE FROM Student WHERE AGE = 20; COMMIT;>
Sortida
Així, se suprimirien dues files de la taula i la instrucció SELECT es veuria com,

sortida
Comandament ROLLBACK
Si es produeix algun error amb alguna de les sentències agrupades SQL, s'han d'avortar tots els canvis. El procés de revertir els canvis s'anomena retrocés . Aquesta ordre només es pot utilitzar per desfer transaccions des que es va emetre l'última ordre COMMIT o ROLLBACK.
Com trobar números bloquejats a Android
Sintaxi per a l'ordre ROLLBACK:
ROLLBACK;
Exemple:
A partir de l'exemple anterior Taula de mostra 1 ,
Suprimiu aquells registres de la taula que tinguin edat = 20 i, a continuació, RETROVEU els canvis a la base de dades.
Consulta
DELETE FROM Student WHERE AGE = 20; ROLLBACK;>
Sortida

sortida
Ordre SAVEPOINT
PUNT DE SALV crea punts dins dels grups de transaccions en els quals es pot ROLLBACK.
Un SAVEPOINT és un punt d'una transacció en el qual podeu revertir la transacció fins a un punt determinat sense revertir tota la transacció.
Sintaxi per a l'ordre Savepoint:
SAVEPOINT SAVEPOINT_NAME;
Aquesta ordre només s'utilitza en la creació de SAVEPOINT entre totes les transaccions.
En general, ROLLBACK s'utilitza per desfer un grup de transaccions.
Sintaxi per tornar a l'ordre Savepoint:
TORNAR A SAVEPOINT_NAME;
què és un sistema de fitxers Linux
podeu ROLLBACK a qualsevol SAVEPOINT en qualsevol moment per tornar les dades adequades al seu estat original.
Exemple:
A partir de l'exemple anterior Taula de mostra 1 , Suprimiu aquells registres de la taula que tinguin edat = 20 i, a continuació, RETROVEU els canvis a la base de dades mantenint els punts de desat.
Consulta
SAVEPOINT SP1; //Savepoint created. DELETE FROM Student WHERE AGE = 20; //deleted SAVEPOINT SP2; //Savepoint created.>
Aquí SP1 és el primer SAVEPOINT creat abans de la supressió. En aquest exemple s'ha produït una supressió.
Després de la supressió de nou, es crea SAVEPOINT SP2.
Sortida

sortida
S'ha produït la supressió, suposem que heu canviat d'opinió i heu decidit ROLLBACK al SAVEPOINT que heu identificat com a SP1, que és abans de la supressió.
l'eliminació es desfà amb aquesta declaració.
Consulta
ROLLBACK TO SP1; //Rollback completed>
Sortida

sortida
Llibera l'ordre SAVEPOINT
Aquesta ordre s'utilitza per eliminar un SAVEPOINT que heu creat.
Sintaxi:
ALlibera SAVEPOINT SAVEPOINT_NAME
Un cop s'ha alliberat un SAVEPOINT, ja no podeu utilitzar l'ordre ROLLBACK per desfer les transaccions realitzades des de l'últim SAVEPOINT.
S'utilitza per iniciar una transacció de base de dades i s'utilitza per especificar les característiques de la transacció que segueix.
Conclusió
- Les sentències SQL s'agrupen mitjançant transaccions.
- Prometen que es fan tots els canvis o cap.
- La fiabilitat està assegurada per les qualitats àcids d'atomicitat, consistència, aïllament i durabilitat.
- Inicieu una transacció amb BEGIN TRANSACTION i finalitzeu-la amb COMMIT o ROLLBACK per completar o desfer els canvis.