Universidad Tecnológica de Tehuacán

Ing. en Tecnologías de la Información y
            Comunicación

   Base de Datos para Aplicaciones
 «Transacciones y Stored Procedures»
    Ing. Octavio Sánchez Delgado

     TSU Vera Sosa Guillermina
       8° A enero-abril 2013

                             24 de enero de 2013
Transacciones
Son operaciones que se realizan en un bloque, para
ello se utiliza:
«Begin» o «start» para iniciar una transacción.
«Rollback» para cancelar y regresar al estado final.
«Commit» para confirmar la transacción y finalizar
la transacción.
Por lo tanto una transacción se define para cumplir
las restricciones de integridad de la base de datos.
Propiedades
• Atomicidad: Confirmación automática de todas las
  transacciones.
• Consistencia: Que se vean reflejados los cambios
  realizados.
• Aislamiento: de manera independiente no comparten
  información entre ellas, por lo tanto realizan primero
  sus operaciones y luego las suyas.
• Durabilidad: Asegurar que la información es correcta.
  Una vez confirmado los cambios ya no se desaceran los
  cambios, por lo tanto se mantendrá la información.
Ventajas de usar transacciones
• Permite recuperar de errores como:
• Servidores pasmados
• Falta de energía
• Errores ajenos a la base de datos
• Errores de la base de datos
• Consultas mal ejecutadas
Para lo cual puedes ejecutar operaciones y ver los
resultados y si estas de acuerdo entonces finalizas
con un commit.
Ejemplo de una transacción
Begin
Insert into tb2 values(2,’Silla’);
Select *from tb2;
Commit

En este ejemplo se inicia la transacción, luego se
inserta un registro en la tabla tb2, después se
realiza una consulta y finalmente se cierra la
finalización.
Procedimientos almacenados
• Es un conjunto de operaciones o comandos
  que pueden almacenarse en el servidor.
• Una vez almacenados puedes acceder y
  utilizar para realizar una o varias operaciones
  especificas con el mismo Stored Procedures.
• Dentro de un procedimiento podemos hacer
  uso de una o varias transacciones especificas.
• Para llamar un Stored Procedures se utiliza el
  call y el nombre del Stored Procedures.
Estructura
• Para utilizar un stored procedure cambiamos
  el delimitador para que no nos mande error
  en las sentencias del procedimiento.
Delimiter //
Create Procedure nombre_SP(Parametros)
Begin
[Conjunto de operaciones o sentencias]
End
Ejemplo
Ejecutando un stored en MySQL se realizaría así.
mysql> delimiter //
mysql> CREATE PROCEDURE simpleproc (OUT
param1 INT)
-> BEGIN
-> SELECT COUNT(*) INTO param1 FROM t;
-> END
-> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
Manejador de errores «Handler»
Es invocado cuando se da un evento o condición
definida con anterioridad. Este evento está
siempre asociado con una condición de
error, pero puedes tener tres formas de definir
el error:
• Como código de error de MySQL
• Como código SQLSTATE ANSI-standard
• Como nombre de condición, ejemplo:
   SQLEXCEPTION,SQLWARNING y NOT FOUND.
SQLWARNING es una abreviación para todos los códigos SQLSTATE que
comienzan con 01.
 NOT FOUND es una abreviación para todos los códigos SQLSTATE que
comienzan con 02.
SQLEXCEPTION es una abreviación para todos los códigos SQLSTATE no
tratados por
SQLWARNING o NOT FOUND.

En el comando Handler podemos manejar una o varias condiciones . Si una
o varias condiciones se cumplen entonces se ejecuta el comando que se
especifique.
Handler CONTINUE : continúa la rutina actual tras la ejecución del comando
del handler.
Handler EXIT , termina la ejecución del comando compuesto BEGIN...END
actual.
Handler UNDO: todavía no se soporta.
Para tratar errores específicos
Podemos utilizar la siguente estructura para un
error en especifico:
DECLARE condition_name CONDITION FOR
condition_value
condition_value:
SQLSTATE [VALUE] sqlstate_value
| mysql_error_code
Para tratar varios errores
• DECLARE handler_type HANDLER FOR condition_value[,...]
  sp_statement
• handler_type:
• CONTINUE
• | EXIT
• | UNDO
• condition_value:
• SQLSTATE [VALUE] sqlstate_value
• | condition_name
• | SQLWARNING
• | NOT FOUND
• | SQLEXCEPTION
• | mysql_error_code
mysql> create procedure pstar ()
begin declare v int;
declare exit handler for sqlexception select 'SQLEXCEPTION';
drop table if exists tstar;
create table tstar (s1 int, s2 char(1));
set v = 0; while TRUE do insert into tstar values (null,null); end
while;
end//
En este ejemplo si cacha un error de una tabla, borra la tabla
después la crea, compara el valor de la variable y mientras
exista crea un registro en la tabla.

Tarea

  • 1.
    Universidad Tecnológica deTehuacán Ing. en Tecnologías de la Información y Comunicación Base de Datos para Aplicaciones «Transacciones y Stored Procedures» Ing. Octavio Sánchez Delgado TSU Vera Sosa Guillermina 8° A enero-abril 2013 24 de enero de 2013
  • 2.
    Transacciones Son operaciones quese realizan en un bloque, para ello se utiliza: «Begin» o «start» para iniciar una transacción. «Rollback» para cancelar y regresar al estado final. «Commit» para confirmar la transacción y finalizar la transacción. Por lo tanto una transacción se define para cumplir las restricciones de integridad de la base de datos.
  • 3.
    Propiedades • Atomicidad: Confirmaciónautomática de todas las transacciones. • Consistencia: Que se vean reflejados los cambios realizados. • Aislamiento: de manera independiente no comparten información entre ellas, por lo tanto realizan primero sus operaciones y luego las suyas. • Durabilidad: Asegurar que la información es correcta. Una vez confirmado los cambios ya no se desaceran los cambios, por lo tanto se mantendrá la información.
  • 4.
    Ventajas de usartransacciones • Permite recuperar de errores como: • Servidores pasmados • Falta de energía • Errores ajenos a la base de datos • Errores de la base de datos • Consultas mal ejecutadas Para lo cual puedes ejecutar operaciones y ver los resultados y si estas de acuerdo entonces finalizas con un commit.
  • 5.
    Ejemplo de unatransacción Begin Insert into tb2 values(2,’Silla’); Select *from tb2; Commit En este ejemplo se inicia la transacción, luego se inserta un registro en la tabla tb2, después se realiza una consulta y finalmente se cierra la finalización.
  • 6.
    Procedimientos almacenados • Esun conjunto de operaciones o comandos que pueden almacenarse en el servidor. • Una vez almacenados puedes acceder y utilizar para realizar una o varias operaciones especificas con el mismo Stored Procedures. • Dentro de un procedimiento podemos hacer uso de una o varias transacciones especificas. • Para llamar un Stored Procedures se utiliza el call y el nombre del Stored Procedures.
  • 7.
    Estructura • Para utilizarun stored procedure cambiamos el delimitador para que no nos mande error en las sentencias del procedimiento. Delimiter // Create Procedure nombre_SP(Parametros) Begin [Conjunto de operaciones o sentencias] End
  • 8.
    Ejemplo Ejecutando un storeden MySQL se realizaría así. mysql> delimiter // mysql> CREATE PROCEDURE simpleproc (OUT param1 INT) -> BEGIN -> SELECT COUNT(*) INTO param1 FROM t; -> END -> // Query OK, 0 rows affected (0.00 sec) mysql> delimiter ;
  • 9.
    Manejador de errores«Handler» Es invocado cuando se da un evento o condición definida con anterioridad. Este evento está siempre asociado con una condición de error, pero puedes tener tres formas de definir el error: • Como código de error de MySQL • Como código SQLSTATE ANSI-standard • Como nombre de condición, ejemplo: SQLEXCEPTION,SQLWARNING y NOT FOUND.
  • 10.
    SQLWARNING es unaabreviación para todos los códigos SQLSTATE que comienzan con 01. NOT FOUND es una abreviación para todos los códigos SQLSTATE que comienzan con 02. SQLEXCEPTION es una abreviación para todos los códigos SQLSTATE no tratados por SQLWARNING o NOT FOUND. En el comando Handler podemos manejar una o varias condiciones . Si una o varias condiciones se cumplen entonces se ejecuta el comando que se especifique. Handler CONTINUE : continúa la rutina actual tras la ejecución del comando del handler. Handler EXIT , termina la ejecución del comando compuesto BEGIN...END actual. Handler UNDO: todavía no se soporta.
  • 11.
    Para tratar erroresespecíficos Podemos utilizar la siguente estructura para un error en especifico: DECLARE condition_name CONDITION FOR condition_value condition_value: SQLSTATE [VALUE] sqlstate_value | mysql_error_code
  • 12.
    Para tratar varioserrores • DECLARE handler_type HANDLER FOR condition_value[,...] sp_statement • handler_type: • CONTINUE • | EXIT • | UNDO • condition_value: • SQLSTATE [VALUE] sqlstate_value • | condition_name • | SQLWARNING • | NOT FOUND • | SQLEXCEPTION • | mysql_error_code
  • 13.
    mysql> create procedurepstar () begin declare v int; declare exit handler for sqlexception select 'SQLEXCEPTION'; drop table if exists tstar; create table tstar (s1 int, s2 char(1)); set v = 0; while TRUE do insert into tstar values (null,null); end while; end// En este ejemplo si cacha un error de una tabla, borra la tabla después la crea, compara el valor de la variable y mientras exista crea un registro en la tabla.