transaciones en mysql
TRANSCRIPT
Transaciones En MysqlY
Handler
TSU. JOSAFAT AGUILAR OLIVARES
¿Que es una transacion?
• Es un conjunto de órdenes que se ejecutan formando unaunidad de trabajo, es decir, en forma indivisible o
atómica.Un SGBD se dice transaccional si es capaz de mantener laintegridad de los datos, haciendo que estas transaccionesno puedan finalizar en un estado intermedio.
Propiedades
• Atomicidad: Una transacción debe ser una unidad atómica detrabajo, tanto si se realizan todas sus modificaciones en los datos,como si no se realiza ninguna de ellas.
• Coherencia: Cuando finaliza, una transacción debe dejar todoslos datos en un estado coherente. En una base de datos relacional,se deben aplicar todas las reglas a las modificaciones de latransacción para mantener la integridad de todos los datos. Todaslas estructuras internas de datos, como índices de árbol b o listasdoblemente vinculadas, deben estar correctas al final de latransacción.
Propiedades
• Aislamiento: Las modificaciones realizadas por transaccionessimultáneas se deben aislar de las modificaciones llevadas a cabopor otras transacciones simultáneas. Una transacción reconoce losdatos en el estado en que estaban antes de que otra transacciónsimultánea los modificara o después de que la segunda transacciónhaya concluido, pero no reconoce un estado intermedio. Esto seconoce como seriabilidad, ya que deriva en la capacidad de volver acargar los datos iníciales y reproducir una serie de transaccionespara finalizar con los datos en el mismo estado en que estabandespués de realizar las transacciones originales.
• Durabilidad: Una vez concluida una transacción, sus efectos sonpermanentes en el sistema. Las modificaciones persisten aún en elcaso de producirse un error del sistema.
Funcionamiento de una transacción
Las transacciones explicitas son aquellas que nosotros indicamos con la sentencia begin transaction / commit o rollback transaction.
Handler
• Un handler es una función que se accionará cuando ocurra un evento. Sobre todo está relacionada con los componentes.
• Ejemplo
• Creamos una tabla:
•
Handler
• Después creamos esta otra que contiene una clave ajena que hace referencia a la anterior :
• Después intentamos insertar un valor en la tabla t3, se trata de un valor que no se encuentra en la columna de t2 que referencia… lo que arroja el siguiente error en la consola de mysql:
Handler
• Error
• Para manejar el error creamos un handler que almacenara el error en una tabla que vamos a crear donde iremos guardando un log de errores
Handler
• Ahora creamos el procedimiento almacenado que se encargara de introducir datos en la BD y manejar excepciones:
Handler
• De esta manera para introducir valores en la base de datos lo haces llamando al procedimiento para que maneje los errores y tener un mayor control sobre la aplicación.
• Sintaxis para declarar handlers:
• declare {exit | continue } handler for {error-number | {SQLSTATE error-string}}
Conclusión
• Una Transacción está delimitada por instrucciones deinicio transacción y fin transacción (la transacciónconsiste en todas las operaciones que se ejecutan entreinicio transacción y fin transacción)