Sei sulla pagina 1di 5

Ensayo transaccin

Alumna: Selene Belem Bartolo Manuel


Profesor: Martin Guerrero Posadas

Taller de Base de Datos


Unidad 5 transacciones

Instituto Tecnolgico de San Luis Potos


14 de Marzo del 2016

Introduccin
Sentencias para la transaccin
Propiedades
Ejemplo de transacciones
Transacciones y procedimientos almacenados

Entre las habilidades de todo Sistema Gestor de Bases de Datos Relaciones tiene
que estar la de permitir al programador crear transacciones. Y aunque el SQL Server
nos permite trabajar con transacciones de manera sencilla y eficaz siempre hay
dificultades.

Introduccin
Una transaccin es un conjunto de operaciones que van a ser tratadas como
una nica unidad. Estas transacciones deben cumplir 4 propiedades fundamentales
comnmente conocidas como ACID (atomicidad, coherencia, asilamiento y
durabilidad).La transaccin ms simple en SQL Server es una nica sentencia SQL.

Por ejemplo una sentencia como esta:


UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'
Esta es una transaccin 'autocommit', una transaccin autocompletada. Cuando se
enva esta sentencia al SQL Server se escribe en el fichero de transacciones lo que
va a ocurrir y a continuacin realiza los cambios necesarios en la base de datos. Si

hay algn tipo de problema al hacer esta operacin el SQL Server puede leer en el
fichero de transacciones lo que se estaba haciendo y si es necesario puede devolver
la base de datos al estado en el que se encontraba antes de recibir la sentencia.
Por supuesto este tipo de transacciones no requieren de nuestra intervencin
puesto que el sistema se encarga de todo. Sin embargo si hay que realizar varias
operaciones y queremos que sean tratadas como una unidad tenemos que crear
esas transacciones de manera explcita.
Una transaccin es un conjunto de operaciones tratadas como una sola. Este
conjunto de operaciones debe marcarse como transaccin para que todas las
operaciones que la conforman tengan xito o todas fracasen. La sentencia que se
utiliza para indicar el comienzo de una transaccin es 'BEGIN TRAN'. Si alguna de
las operaciones de una transaccin falla hay que deshacer la transaccin en su
totalidad para volver al estado inicial en el que estaba la base de datos antes de
empezar. Esto se consigue con la sentencia 'ROLLBACK TRAN'.
Si todas las operaciones de una transaccin se completan con xito hay que marcar
el fin de una transaccin para que la base de datos vuelva a estar en un estado
consistente con la sentencia 'COMMIT TRAN'.

Propiedades
ACID son las siglas (Atomicidad, Consistencia, Aislamiento, Durabilidad).
Atomicidad. Es la propiedad que asegura que la operacin se ha realizado o no, y
por lo tanto ante un fallo del sistema no puede quedar a medias.

Consistencia. Esta propiedad est ligada a la integridad referencial, es decir solo


se pueden escribir datos vlidos respetando los tipos de datos declarados y la
integridad referencial.
Aislamiento. Asegura que una operacin no puede afectar a otras. Con esto se
asegura que varias transacciones sobre la misma informacin sean
independientes y no generen ningn tipo de error.
Durabilidad. Cuando se completa una transaccin con xito los cambios se
vuelven permanentes.

Ejemplo de transaccin
Las instrucciones en mysql funcionan como en SQL server. Van exactamente
igual. Ejemplos:
SELECT * FROM TBL
DELETE * FROM TBL
TRUNCATE TBL
Una transaccin no es otra cosa que una serie de instrucciones, con la finalidad de
que si alguna falla las previas instrucciones se deshagan (algo as como el famoso
Ctrl-Z). La sintaxis es muy simple:

DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;


START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE TYPE=1;
UPDATE table2 SET summary=@A WHERE TYPE=1;
COMMIT;

Transacciones y procedimientos almacenados


Si sale de un procedimiento almacenado con el valor que no es la misma que la
que se introdujo el procedimiento almacenado, se producir el siguiente error:

Este problema es ms probable que ocurra cuando se escriben procedimientos


almacenados anidados. Sin embargo, hay soluciones para que el procedimiento
almacenado funcione sin el error. La siguiente es una lista de soluciones, con
cdigo de ejemplo para cada uno:
CREATE PROCEDURE test AS
SELECT @@trancount
ROLLBACK TRANSACTION
SELECT @@trancount
GO
BEGIN TRANSACTION
EXEC test
GO

1.- Realizar transacciones finales de commit o rollback en el mismo nivel de


anidamiento de un procedimiento almacenado cuando comenz la transaccin,
como se muestra en los ejemplos siguientes:
2.- Si se utilizan transacciones anidadas en un procedimiento almacenado, ejecute
confirmaciones que coincidan.Observe que la transaccin no se confirma hasta
que @@trancount es igual a 0 (cero).
3.- Si se necesita deshacer y el nivel de anidamiento del procedimiento
almacenado es diferente de donde comenz la transaccin, utilice RAISERROR
con un error vlido definido por el usuario y compruebe la variable global @@error
despus del comando EXECUTE.
4.- La excepcin a esta regla es que si un desencadenador realiza una operacin
de deshacer, @@trancount debe no coincide con su valor inicial, porque se anul
el lote. Sin embargo, un procedimiento almacenado llamado por un
desencadenador puede causar el problema si anul la transaccin.
REFERENCIAS
https://support.microsoft.com/es-es/kb/158325
http://www.foro.lospillaos.es/un-ejemplo-de-una-transacciones-en-mysql-vt11693.html
http://es.scribd.com/doc/185091577/TRANSACCIONES-SQL-pdf#scribd

Potrebbero piacerti anche