Professional Documents
Culture Documents
Unidad de trabajo realizada una o mas sentencias SQL estrechamente relacionadas. Secuencia de operaciones realizadas como una sola unidad lgica de trabajo.
Transacciones
Cuatro propiedades ACID
Atomicidad
Unidad atmica de trabajo, tanto si realizan todas las modificaciones en los datos como si no se realiza ninguna de ellas
Coherencia
Al finalizar la transaccin debe dejar todos los datos en un estado coherente. Se modifican todas las estructuras de datos internas cmo ndices.
Aislamiento
Las modificaciones realizadas por transacciones simultneas deben aislar de las modificaciones llevadas a cabo por otras transacciones simultneas. Una transaccin ve los datos antes o despus que otra transaccin los modific, pero no ve el estado ITESO, Administracin de Bases intermedio.
de Datos.
Durabilidad
Una vez concluida un transaccin sus efectos son permanentes en el sistema. Sus efectos persisten an en el caso de producirse un error del sistema.
Ejemplo: Aislamiento
Usuario A saca $100 y usuario B saca $250 de cuenta de usuario Z que tiene un saldo de $1000. Como A y B afectan Z, alguno tiene que esperar a que el otro termine la transaccin para evitar inconsistencias. B espera A , saldo $900 B hace su transaccin saldo $650
Ejemplo: Durabilidad
Usuario B puede sacar sus $100 solamente despus que la transaccin de A se ha completado. Si el sistema falla antes que se realice la transaccin A, esta no tiene efecto y se regresa al ltimo estado consistente de Z.
SQL
Los programadores son los responsables de iniciar y finalizar las transacciones en puntos que exijan la coherencia lgica de los datos. El DBMS debe proporcionar los mecanismos que aseguren la integridad fsica de cada transaccin.
SQL
- Servicio de bloqueo que preservan el aislamiento de una transaccin. - Servicios de registro que aseguran la durabilidad de una transaccin. - Atomicidad, una vez iniciada debe concluirse correctamente o SQL deshar todas las modificaciones de datos desde que inici la transaccin.
SQL sentencias
Begin transacction T1
UPDATE pedido SET cantidad = 10, importe = 3500 WHERE num_pedido = 30933; UPDATE repventas SET ventas = ventas + 3500 WHERE num_empl = 470 UPDATE oficina SET ventas = ventas + 3500 WHERE num_oficina = 31
Commit transaction T1
SQL sentencias
Begin transacction T2
UPDATE pedido SET cantidad = 10, importe = 3500 WHERE num_pedido = 30933; UPDATE repventas SET ventas = ventas + 3500 WHERE num_empl = 470 UPDATE oficina SET ventas = ventas + 3500 WHERE num_oficina = 31
Rollback transaction T2
SQL con SP
CREATE PROC tranprueba @arg int as BEGIN TRAN IF exists (SELECT * FROM prueba WHERE col1 = @arg) BEGIN RAISERROR('Valor %d ya existe!', 16, -1, @arg) ROLLBACK TRAN END ELSE BEGIN INSERT INTO prueba (col1) values (@arg) COMMIT TRAN END
Caso
PROCESO DE INSCRIPCIONES EN PERIODO DE ESCUELA
EL COSTO DE INSCRIPCION ES DE 2000.00 DOS MIL PESOS EL ESTUDIANTE QUE YA EXISTE EN UNA BD SE AUTENTIFICA POR INTERNET INDICA QUE QUIERE INSCRIBIRSE Y LA APLICACIN LE GENERA UN MONTO CON CENTAVOS (DOS MIL PESOS Y CENTAVOS). (NO DEBE REPETIRSE EL MONTO PARA CUALQUIER USUARIO QUE ACCEDA CONCURRENTE) - EL MONTO CON CENTAVOS SE REGISTRA EN LA BD, ES LA CANTIADAD QUE EL ESTUDIENTE DEPOSITA Y LA MENERA DE IDENTIFICARLO EN EL ESTADO DE CUENTA PARA INSCRIBIRLO
ITESO, Administracin de Bases de Datos.