T-SQL – Transacciones

PERO acuerdo es una unidad de trabajo que se realiza en una base de datos. Las transacciones son unidades o secuencias de trabajo realizadas en un orden lógico, ya sea manualmente por el usuario o automáticamente por algún programa de base de datos.

Una transacción es la propagación de uno o más cambios en una base de datos. Por ejemplo, si crea un registro, actualiza un registro o elimina un registro de una tabla, entonces está realizando una transacción en la tabla. Es importante monitorear las transacciones para garantizar la integridad de los datos y manejar los errores de la base de datos.

De hecho, agrupará muchas consultas SQL y las ejecutará todas juntas como parte de una transacción.

Propiedades de la transacción

Las transacciones tienen las siguientes cuatro propiedades estándar, comúnmente denominadas ACID:

  • Atomicidad – Asegura la finalización exitosa de todas las operaciones dentro del bloque de trabajo; de lo contrario, la transacción se aborta en el punto de falla y las operaciones anteriores se revierten a su estado anterior.

  • Secuencia – Asegura que el estado de la base de datos cambie correctamente después de una transacción exitosa.

  • Aislamiento – Permite que las transacciones funcionen de forma independiente y transparente entre sí.

  • Durabilidad – Asegura que el resultado o efecto de una transacción comprometida persista en caso de falla del sistema.

Control de transacciones

Los siguientes comandos se utilizan para administrar transacciones:

  • COMPLETO – Guardar cambios.

  • RETROCEDER – Revertir cambios.

  • PUNTO DE GUARDADO – Crea puntos en grupos de transacciones para ROLLBACK.

  • INSTALAR UNA OFERTA – Agrega un nombre a la transacción.

Los comandos de control de transacciones se utilizan solo con los comandos DML INSERT, UPDATE y DELETE. No se pueden usar al crear tablas o descartarlas, porque estas operaciones se confirman automáticamente en la base de datos.

Para utilizar los comandos de gestión de transacciones en MS SQL Server, debemos iniciar una transacción con ‘begin tran’ o el comando start transaction, de lo contrario estos comandos no funcionarán.

Comando COMMIT

El comando COMMIT es un comando transaccional que se usa para guardar los cambios causados ​​por una transacción en la base de datos. Este comando guarda todas las transacciones en la base de datos desde el último COMMIT o ROLLBACK.

Sintaxis

A continuación se muestra la sintaxis del comando COMMIT.

COMMIT; 

Ejemplo

Considere la tabla CLIENTES con las siguientes entradas.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00 
2   Khilan     25        Delhi             1500.00 
3   kaushik    23        Kota              2000.00 
4   Chaitali   25        Mumbai            6500.00 
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

El siguiente ejemplo de comando eliminará los registros de la tabla que tengan edad = 25 y luego COMPLETE los cambios en la base de datos.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT 

Como resultado, se eliminarán dos filas de la tabla y la instrucción SELECT producirá el siguiente resultado.

ID  NAME       AGE       ADDRESS           SALARY 
1   Ramesh     32        Ahmedabad         2000.00
3   kaushik    23        Kota              2000.00
5   Hardik     27        Bhopal            8500.00 
6   Komal      22        MP                4500.00 
7   Muffy      24        Indore            10000.00 

Comando ROLLBACK

El comando ROLLBACK es un comando transaccional que se utiliza para revertir transacciones que aún no se han guardado en la base de datos. Este comando solo se puede usar para deshacer transacciones desde el último COMMIT o ROLLBACK.

Sintaxis

A continuación se muestra la sintaxis del comando ROLLBACK.

ROLLBACK

Ejemplo

Considere la tabla CLIENTES con las siguientes entradas.

ID  NAME       AGE       ADDRESS            SALARY 
1   Ramesh     32        Ahmedabad          2000.00 
2   Khilan     25        Delhi              1500.00 
3   kaushik    23        Kota               2000.00 
4   Chaitali   25        Mumbai             6500.00 
5   Hardik     27        Bhopal             8500.00 
6   Komal      22        MP                 4500.00 
7   Muffy      24        Indore             10000.00 

El siguiente ejemplo de comando elimina registros de una tabla que tienen edad = 25 y luego revierte los cambios en la base de datos.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

Como resultado, la operación de eliminación no afectará a la tabla y la instrucción SELECT producirá el siguiente resultado.

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

Comando SAVEPOINT

SAVEPOINT es el punto en una transacción en el que puede revertir una transacción a un punto específico sin revertir toda la transacción.

Sintaxis

A continuación se muestra la sintaxis del comando SAVEPOINT.

SAVE TRANSACTION SAVEPOINT_NAME

Este comando solo sirve para crear un SAVEPOINT entre declaraciones transaccionales. El comando ROLLBACK se utiliza para deshacer un grupo de transacciones.

A continuación se muestra la sintaxis para revertir a SAVEPOINT.

ROLLBACK TO SAVEPOINT_NAME

En el siguiente ejemplo, eliminaremos tres registros diferentes de la tabla CLIENTES. Necesitaremos crear un SAVEPOINT antes de cada eliminación, de modo que podamos ROLLBACK a cualquier SAVEPOINT en cualquier momento para restaurar los datos correspondientes a su estado original.

Ejemplo

Considere la tabla CLIENTES con las siguientes entradas:

ID  NAME       AGE       ADDRESS          SALARY 
1   Ramesh     32        Ahmedabad        2000.00 
2   Khilan     25        Delhi            1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

A continuación se muestra una serie de operaciones:

Begin Tran 
SAVE Transaction SP1 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 1  
1 row deleted. 
SAVE Transaction SP2 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 2 
1 row deleted.
SAVE Transaction SP3 
Savepoint created. 
DELETE FROM CUSTOMERS WHERE ID = 3 
1 row deleted.

Hubo tres eliminaciones, sin embargo, cambiamos de opinión y decidimos ROLL de nuevo a SAVEPOINT, que definimos como SP2. Dado que SP2 se creó después de la primera desinstalación, las dos últimas desinstalaciones se deshacen:

ROLLBACK Transaction SP2 
Rollback complete. 

Tenga en cuenta que después de la reversión a SP2, solo se produjo la primera eliminación.

SELECT * FROM CUSTOMERS 

Seleccionado 6 filas.

ID  NAME       AGE       ADDRESS          SALARY 
2   Khilan     25        Delhi        1500.00 
3   kaushik    23        Kota             2000.00 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
6   Komal      22        MP               4500.00 
7   Muffy      24        Indore           10000.00 

Comando SET TRANSACTION

El comando SET TRANSACTION se puede utilizar para iniciar una transacción de base de datos. Este comando se utiliza para determinar las características de la próxima transacción.

Sintaxis

A continuación se muestra la sintaxis de SET TRANSACTION.

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

🚫