Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Transacciones en BDD

No description
by

Cristina Medina

on 10 January 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Transacciones en BDD

Una transacción en un (SGBD), es un conjunto de órdenes que se ejecutan formando una unidad de trabajo, es decir, en forma indivisible o atómica. Transacciones en BDD ¿Cuándo inicia y finaliza una transacción? Begin transaction Partes Rollback Rollback es una operación que devuelve a la base de datos a algún estado previo. Los Rollbacks son importantes para la integridad de la base de datos, a causa de que significan que la base de datos puede ser restaurada a una copia limpia incluso después de que se han realizado operaciones erróneas. Tipos de transacciones Estados de una transacción Una transacción inicia cuando la primera sentencia DML es encontrada y finaliza cuando ocurre alguno de los siguientes puntos:

•Una sentencia COMMIT o ROLLBACK es usada.
•Una sentencia DDL, como CREATE es utilizada.
•Una sentencia DCL es usada.
•Una computadora falla o el sistema falla.
•Después de que una transacción finaliza, la siguiente sentencia SQL ejecutada automáticamente inicia la siguiente transacción.
•Una sentencia DDL o DCL es automáticamente completada y por consiguiente implícitamente finaliza una transacción. Representa un punto en el que los datos a los que hace referencia una conexión son lógica y físicamente coherentes. Si se producen errores, se pueden revertir todas las modificaciones realizadas en los datos después de BEGIN TRANSACTION. SET IMPLICIT_TRANSACTIONS ON
 DECLARE @importe DECIMAL(18,2),
@CuentaOrigen VARCHAR(12),
@CuentaDestino VARCHAR(12)

/* Asignamos el importe de la transferencia
* y las cuentas de origen y destino*/
SET @importe = 50
SET @CuentaOrigen = '200700000002'
SET @CuentaDestino = '200700000001' BEGIN TRAN: Especifica que va a empezar una transacción.
COMMIT TRAN: Le indica al motor que puede considerar la transacción completada con éxito, haciendo permanentes todos los cambios pendientes
ROLLBACK TRAN: Indica que se ha alcanzado un fallo y que debe restablecer la base al punto de integridad.
SAVEPOINT: Es usado para deshacer hasta la marca indicada, marca un punto de la transacción actual. Commit (acción de comprometer) se refiere a la idea de consignar un conjunto de cambios "tentativos, o no permanentes". Un uso popular es al final de una transacción de base de datos. Commit Modificar el precio de dos productos de la base de datos DECLARE @Error int
--Declaramos una variable código de errorBEGIN TRAN --Iniciamos la transacción
UPDATE Products SET UnitPrice=20 WHERE ProductName =’Chai’
--Ejecutamos la primera sentenciaSET @Error=@@ERRORIF (@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
IF (@Error<>0) GOTO TratarError
COMMIT TRAN Modificar el precio de dos productos de la base de datos 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
Ejemplos Sentencias para el control de transacciones. Propiedades de las Transacciones: A.C.I.D. Es un conjunto de características o propiedades que garantizan que las transacciones en una base de datos son fiables A.C.I.D Atomicidad: Cualquier cambio de estado que produce una transacción es atómico. Es decir, ocurren todos o no ocurre ninguno. Consistencia: Propiedad que asegura que una transacción no romperá con la integridad de una base de datos, pues respeta todas las reglas y directrices de ésta. Aislamiento: Propiedad que asegura que no se afectarán entre sí las transacciones. Es decir, dos o más transacciones sobre los mismos datos no generarán un problema. Durabilidad: Propiedad que asegura la persistencia de una transacción, es decir, una vez que la transacción quedó aceptada no podrá deshacerse aunque falle el sistema. Mecanismos SQL Partes BEGIN TRY
/* Descontamos el importe de la cuenta origen */
UPDATE CUENTAS
SET SALDO = SALDO - @importe
WHERE NUMCUENTA = @CuentaOrigen

/* Registramos el movimiento */
INSERT INTO MOVIMIENTOS
(IDCUENTA, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE, FXMOVIMIENTO)
SELECT
IDCUENTA, SALDO + @importe, SALDO, @importe, getdate()
FROM CUENTAS
WHERE NUMCUENTA = @CuentaOrigen Partes /* Incrementamos el importe de la cuenta destino */
UPDATE CUENTAS
SET SALDO = SALDO + @importe
WHERE NUMCUENTA = @CuentaDestino 
/* Registramos el movimiento */
INSERT INTO MOVIMIENTOS
(IDCUENTA, SALDO_ANTERIOR, SALDO_POSTERIOR, IMPORTE, FXMOVIMIENTO)
SELECT
IDCUENTA, SALDO - @importe, SALDO, @importe, getdate()
FROM CUENTAS
WHERE NUMCUENTA = @CuentaDestino /* Confirmamos la transacción*/
COMMIT TRANSACTION -- O solo COMMIT
END TRY
BEGIN CATCH

/* Hay un error, deshacemos los cambios*/
ROLLBACK TRANSACTION -- O solo ROLLBACK
PRINT 'Se ha producido un error!'
END CATCH
Full transcript