Está en la página 1de 9

Universidad de Margarita

Alma Mater del Caribe


Vicerrectorado Académico
Decanato de Ingeniería

Base de datos II (UNIDAD III)

Tutor: Prof.

Daniel Eduardo Cazorla Pérez


C.I.: 27.740.190

El Valle del Espíritu Santo, marzo de 2022


Introducción

Una transacción es un conjunto de sentencias SQL que se ejecutan en una


base de datos como una única operación, confirmándose o deshaciéndose todo el
conjunto de sentencias SQL. La transacción puede quedar finalizada o
implícitamente. Durante la transacción, todas las modificaciones que hagamos
sobre base de datos, no son definitivas, más concretamente, se realizan sobre un
tablespace especial que se denomina tablespace de ROLLBACK, o RBS. Este
tablespace tiene reservado un espacio para cada sesión activa en el servidor, y es
en ese espacio donde se almacenan todas las modificaciones de cada
transacción.

Una vez que la transacción se ha finalizado, las modificaciones temporales


almacenadas en el RBS, se vuelcan al tablespace original, donde está
almacenada nuestra tabla. Esto permite que ciertas modificaciones que se realizan
en varias sentencias, se puedan validar todas a la vez, o rechazar todas a la vez.
Transacción

Flujo económico que refleja creación, transformación, intercambio,


transferencia o extinción de un valor económico y entraña traspasos de propiedad
de bienes o activos financieros, prestación de servicios o suministro de mano de
obra y capital.

Ejemplo: cuando una joyería vende un reloj a cambio de una cantidad de dinero.
También, puede realizarse entre una persona y una máquina, sería el caso
cuando compramos un café en una máquina

Transacciones en SQL

Una transacción es una propagación de uno o más cambios en la base de


datos, ya sea cuando se crea, se modifica o se elimina un registro. En la práctica
suele consistir en la agrupación de consultas SQL y su ejecución como parte de
una transacción.

Ejemplo:

Trabajaremos con la base de datos Northwind en nuestros ejemplos.

Vamos a realizar una transacción que modifica el precio de dos productos de la


base de datos.

USE NorthWind

DECLARE @Error int

–Declaramos una variable que utilizaremos para almacenar un posible código de


erro

BEGIN TRAN

–Iniciamos la transacción

UPDATE Products SET UnitPrice=20 WHERE ProductName =’Chai’


–Ejecutamos la primera sentencia

SET @Error=@@ERROR

–Si ocurre un error almacenamos su código en @Error

–y saltamos al trozo de código que deshara la transacción. Si, eso de ahí es un

–GOTO, el demonio de los programadores, pero no pasa nada por usarlo

–cuando es necesario

IF (@Error<>0) GOTO TratarError

–Si la primera sentencia se ejecuta con éxito, pasamos a la segunda

UPDATE Products SET UnitPrice=20 WHERE ProductName=’Chang’

SET @Error=@@ERROR

–Y si hay un error hacemos como antes

IF (@Error<>0) GOTO TratarError

–Si llegamos hasta aquí es que los dos UPDATE se han completado con

–éxito y podemos "guardar" la transacción en la base de datos

COMMIT TRAN

TratarError:

–Si ha ocurrido algún error llegamos hasta aquí

If @@Error<>0 THEN

BEGIN

PRINT ‘Ha ecorrido un error. Abortamos la transacción’

–Se lo comunicamos al usuario y deshacemos la transacción

–todo volverá a estar como si nada hubiera ocurrido

ROLLBACK TRAN
END

Bitácora de transacción

Cada base de datos en SQL Server tiene un Transaction Log asociado con ella.
El transaction log (en español bitácora de transacciones) es un componente
esencial de SQL Server, el cual la utiliza para registrar un historial de cada
modificación que sufre la base de datos como resultado de las transacciones.

Ejemplo:

CREATE TABLE [dbo].[Bitacora] (

[BitacoraID] [int] IDENTITY (1, 1) NOT NULL ,

[EventType] [char] (14) NOT NULL ,

[Status] [int] NOT NULL ,

[EventInfo] [varchar] (1000) NOT NULL ,

[Usuario] [varchar] (20) NOT NULL ,

[Fecha] [smalldatetime] NOT NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Bitacora] WITH NOCHECK ADD

CONSTRAINT [DF_Bitacora_Usuario] DEFAULT (suser_sname()) FOR [Usuario],

CONSTRAINT [DF_Bitacora_Fecha] DEFAULT (getdate()) FOR [Fecha]

Y, por otro lado, el trigger en la tabla lo refiniría de la siguiente

manera:

/* Trigger de Monitoreo */

CREATE TRIGGER trig_tablabitacora

ON TABLA
FOR DELETE, INSERT, UPDATE

AS

BEGIN

DECLARE @NUMERO INT

INSERT INTO Bitacora (EventType,Status,EventInfo)

exec sp_executesql N’DBCC INPUTBUFFER( @i )’, N’@i int’,

@i=@@spid

END

Propiedades ACID

En bases de datos se denomina ACID a las características de los parámetros


que permiten clasificar las transacciones de los sistemas de gestión de bases de
datos.

Ejemplo: es una sola transacción la acción de transferir fondos de una cuenta


bancaria a otra, aun cuando involucra varios cambios en distintas tablas.

Niveles de aislamiento

El nivel de aislamiento especifica cómo se gestionan las transacciones que


modifican la base de datos. No todos los tipos de bases de datos soportan cada
nivel de aislamiento.

Ejemplo: Una transacción podría constar de dos instrucciones UPDATE, la


primera de las cuales aumenta el salario de todos los empleados en un 10 por
ciento y la segunda de las cuales establece el pago de los empleados por encima
de un importe máximo en esa cantidad. Esto se realiza correctamente como una
sola transacción solo porque la segunda instrucción UPDATE puede ver los
resultados de la primera.

Puntos de sincronización o de chequeo.

Se emite cuando se ejecuta un comando CHECKPOINT de Transact-SQL . El


punto de comprobación manual se produce en la base de datos actual para la
conexión. De forma predeterminada, los puntos de comprobación manuales se
ejecutan hasta completarse. La limitación funciona de la misma forma que para los
puntos de comprobación automáticos. Opcionalmente, el parámetro
checkpoint_duration especifica un periodo de tiempo solicitado, en segundos, para
que se complete el punto de comprobación.

Ejemplo: Una transacción de larga ejecución ha causado una entrada en el


registro, después del primer punto de control mostrado. La transacción no finaliza,
hasta después del tercer punto de control. Toda la información del registro, desde
el primero en adelante, se retiene para permitir la recuperación de dicha
transacción, si es necesario, hasta que finaliza. Después de que la transacción de
larga ejecución ha finalizado, la cabecera del registro se traslada a otro punto de
control, el último punto de control anotado. Los archivos que contienen registros
anteriores en el otro punto de control, ya no son necesarios. Si utiliza el registro
circular, el espacio puede reutilizarse.

Problemas de concurrencia

En ciencias de la computación, concurrencia se refiere a la habilidad de


distintas partes de un programa, algoritmo, o problema de ser ejecutado en
desorden o en orden parcial, sin afectar el resultado final.

Ejemplo: Cuando un usuario está cambiando datos, pero aún no ha guardado


(confirmado) esos datos, entonces la base de datos no debe permitir que otros
usuarios que consultan los mismos datos vean los datos cambiados y no
guardados.
Triggers

La principal función de los trigger es contribuir a mejorar la gestión de la base


de datos. Gracias a ellos muchas operaciones se pueden realizar de forma
automática, sin necesidad de intervención humana, lo que permite ahorrar mucho
tiempo. Otra de sus funciones es aumentar la seguridad e integridad de la
información.

Ejemplo: las siguientes sentencias crean una tabla y un disparador para


sentencias INSERT dentro de la tabla. El disparador suma los valores insertados
en una de las columnas de la tabla:

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));

mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account

-> FOR EACH ROW SET @sum = @sum + NEW.amount;


Conclusión

Un SGBD se dice transaccional si es capaz de mantener la integridad de datos,


haciendo que estas transacciones no puedan finalizar en un estado intermedio. La
transacción es una unidad de trabajo lógica. Para realizar una unidad de trabajo
lógica, puede ser necesario llevar a cabo varias acciones con respecto a una base
de datos. El soporte transaccional permite a las aplicaciones asegurarse de que:
Se siguen todos los pasos para realizar una unidad de trabajo lógica.

Una transacción, para cumplir con su propósito y protegernos de todos los


problemas que hemos visto, debe presentar las siguientes características:
atomicidad, las operaciones que componen una transacción deben considerarse
como una sola; Consistencia, una operación nunca deberá dejar datos
inconsistentes. La transacción es una operación que se lleva a cabo entre dos o
más partes y que su objetivo es el intercambio de bienes o servicios a cambio de
un determinado capital. A demás del ejemplo explicado anteriormente, mas allá de
eso podemos decir que si Fernando accede a pagar un poco más del monto que,
según él, le correspondía pagar, y María accede a ceder aquellos accesorios del
inmueble que, según ella, no le correspondía entregar. Con ello, ambas partes
habrían realizado concesiones recíprocas y se verían satisfechas con el acuerdo.

También podría gustarte