martes, 20 de noviembre de 2012

Procedimientos Almacenados y Disparadores(Trigger)

Procedimiento Almacenados


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

Disparadores (Trigger)


Un disparador (o trigger) es un tipo especial de procedimiento almacenado asociado a una tabla que se ejecuta al realizar una operación “básica” (INSERT, un DELETE o un UPDATE) sobre ésta. La operación básica que despierta al trigger es conocida como sentencia disparadora.

La ejecución del disparador puede ser antes (before) o después (after) de llevar a cabo la sentencia disparadora. Es posible especificar condiciones adicionales para la ejecución del disparador (restrictores).

Los disparadores sea activan al crearlos.

     Eliminar un disparador:      DROP TRIGGER nombre_disparador;

     Activar/ Desactivar dispadores: Existen dos opciones.

      ALTER TRIGGER nombre_disparador {DISABLE | ENABLE};

      ALTER TABLE nombre_tabla {ENABLE | DISABLE} ALL TRIGGERS;



   Temporalidad del Evento:    AFTER / BEFORE

         BEFORE: Ejecutan la acción asociada antes de que la sentencia sea ejecutada

          CREATE TRIGGER NombreTrigger
          BEFORE Insert ON NombreTabla ….

          AFTER: Ejecutan la acción asociada después de que se haya ejecutado la sentencia

          CREATE TRIGGER NombreTrigger
          AFTER Insert ON NombreTabla


La sintaxis de un disparador es

       CREATE [OR REPLACE] TRIGGER nombre
         {BEFORE | AFTER } // Temporalidad del Evento
         {INSERT | DELETE | UPDATE} ON <tabla>
         [FOR EACH ROW] //Granularidad
       BEGIN
         cuerpo del trigger
       END

Cursores

¿Cuando Debemos Usar Un Cursor?


Los cursores se utilizan para manejar las sentencias SELECT. Un cursor esta formado por un conjunto de registros devueltos por una instrucción SQL del tipo SELECT. Desde un punto de visto interno a la base de datos, los cursores son segmentos de memoria utilizados para realizar operaciones con los registros devueltos tras ejecutar una sentencia SELECT.

¿Como Crear Y Llamar Un Proceso En Mysql?


Un procedimiento es un subprograma que ejecuta una acción específica y que no devuelve ningún valor. Un procedimiento tiene un nombre, un conjunto de parámetros (opcional) y un bloque de código.


   CREATE 

   PROCEDURE <nombre_procedure> [(<param1> [IN|OUT|IN OUT]     
                                 <type>, <param2> [IN|OUT|IN OUT]      
                                 <type>, ...)] 

   BEGIN 

             -- Sentencias
   END;



La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía ( ) . Cada parámetro es un parámetro IN por defecto. Para especificar otro tipo de parámetro, use la palabra clave OUT o INOUT antes del nombre del parámetro. Especificando IN, OUT, o INOUTsólo es valido para una PROCEDURE.

Al especificar el tipo de dato del parámetro no debemos especificar la longitud del tipo.

Los parámetros pueden ser de entrada (IN), de salida (OUT) o de entrada salida (IN OUT). El valor por defecto es IN, y se toma ese valor en caso de que no especifiquemos nada.

¿Como Crear Una Función?

Las variables en las funciones se declaran con la sentencia DECLARE, y se asignan valores con la sentencia SET. Esta variable es de ámbito local, y será destruida una vez finalice la función. Si se desea asignar un valor por defecto a la variable en el momento de declararla se puede utilizar la sentencia DEFAULT junto con la sentencia DECLARE. Aquí teneis el ejemplo:
       CREATE FUNCTION HolaMundo() RETURNS VARCHAR(30)
       BEGIN
         DECLARE salida1 VARCHAR(30) DEFAULT 'Hola';
         DECLARE salida2 VARCHAR(30);


         SET salida2 = ' mundo';
         RETURN CONCAT(salida1,salida2);
       END
;


Para crear función con parámetros:

      CREATE FUNCTION HolaMundo(entrada VARCHAR(30)) RETURNS             
      VARCHAR(30)

      BEGIN

        DECLARE salida VARCHAR(30);
        SET salida = entrada;
        RETURN salida;

     END;

Para llamar a esta función:

     SELECT HolaMundo('Hola Mundo');




miércoles, 31 de octubre de 2012

Unidad V Transacciones

¿Qué es una transacción? 


Se llama Transacción a una colección de operaciones que forman una unidad lógica de trabajo en una BD realizada por una o más sentencias SQL estrechamente relacionadas.

Una transacción es una unidad de la ejecución de un programa que lee y escribe datos a y desde la Base de Datos. Puede consistir en varias operaciones de acceso a la base de datos. Una Transacción está delimitada por instrucciones de inicio transacción y fin transacción.


¿Qué significa ACID? Y defina cada una de las palabras que forman las siglas

Una unidad lógica de trabajo debe exhibir cuatro propiedades, conocidas como propiedades ACID (atomicidad, coherencia, aislamiento y durabilidad), para ser calificada como transacción.


  • Atomicity: Una Transacción (Tx) se ejecuta completamente ó de otra manera se eliminan los cambios parciales realizados.
  • Coherencia: Asegura que los datos que observamos no cambian (por otros usuarios) hasta que acabemos la Transacción.
  • Aislamiento: Los efectos de una Tx no son visibles a otros usuarios mientras no se confirmen.
  • Durabilidad: Si el sistema falla no debe permitir que se pierdan las operaciones realizadas por Tx ya confirmadas.

¿Qué significa Tx?

Transacción

¿Para qué nos sirve el Rollback?

Señala el final sin éxito de una transacción, elimina todas las modificaciones de datos realizadas desde el inicio de la transacción y también libera los recursos que retiene la transacción. Su sintaxis es la siguiente: 

ROLLBACK [WORK] [TO SAVEPOINT nombrePuntoRestauración | FORCE 'texto']; 

Defina Integridad de datos

Es importante, al diseñar una base de datos y las tablas que contiene, tener en cuenta la integridad de los datos, esto significa que la información almacenada en las tablas debe ser válida, coherente y exacta. 

Defina concurrencia

El objetivo fundamental del control de concurrencia de base de datos es garantizar que la ejecución concurrente de transacciones no resulta en una pérdida de consistencia de la base de datos. 

La concurrencia se da cuando dos transacciones están interconectadas, lo que es común en un entorno multiusuario. Así pues en un entorno de multiprogramación es posible ejecutar varias transacciones de manera concurrente. 

Defina Grado de consistencia

Consistencia es un término más amplio que el de integridad. Podría definirse como la coherencia entre todos los datos de la base de datos. Cuando se pierde la integridad también se pierde la consistencia. Pero la consistencia también puede perderse por razones de funcionamiento. 

Mencione aspectos relacionados al procesamiento de transacciones

Los siguientes son los aspectos más importantes relacionados con el procesamiento de transacciones:

  • Modelo de estructura de transacciones. Es importante considerar si las transacciones son planas o pueden estar anidadas. 
  • Consistencia de la base de datos interna. Los algoritmos de control de datos semántico tienen que satisfacer siempre las restricciones de integridad cuando una transacción pretende hacer un commit. 
  • Protocolos de confiabilidad. En transacciones distribuidas es necesario introducir medios de comunicación entre los diferentes nodos de una red para garantizar la atomicidad y durabilidad de las transacciones. Así también, se requieren protocolos para la recuperación local y para efectuar los compromisos (commit) globales. 
  • Algoritmos de control de concurrencia. Los algoritmos de control de concurrencia deben sincronizar la ejecución de transacciones concurrentes bajo el criterio de correctitud. La consistencia entre transacciones se garantiza mediante el aislamiento de las mismas. 
  • Protocolos de control de réplicas. El control de réplicas se refiere a cómo garantizar la consistencia mutua de datos replicados. Por ejemplo se puede seguir la estrategia read-one-write-all (ROWA). 


Defina los estados de una transacción:


Activa (Active): el estado inicial; la transacción permanece en este estado durante su ejecución.

Parcialmente comprometida (Uncommited): Después de ejecutarse la última transacción.

Fallida (Failed): tras descubrir que no se puede continuar la ejecución normal.

Abortada (Rolled Back): después de haber retrocedido la transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.

Comprometida (Commited): tras completarse con éxito.

El estándar ANSI/ISO SQL define cuatro niveles de aislamiento transaccional en función de tres eventos que son permitidos o no dependiendo del nivel de aislamiento. Estos eventos son:

  • Lectura sucia. Las sentencias SELECT son ejecutadas sin realizar bloqueos, pero podría usarse una versión anterior de un registro. Por lo tanto, las lecturas no son consistentes al usar este nivel de aislamiento. 
  • Lectura no repetible. Una transacción vuelve a leer datos que previamente había leído y encuentra que han sido modificados o eliminados por una transacción cursada. 
  • Lectura fantasma. Una transacción vuelve a ejecutar una consulta, devolviendo un conjunto de registros que satisfacen una condición de búsqueda y encuentra que otros registro que satisfacen la condición han sido insertadas por otra transacción cursada.

miércoles, 24 de octubre de 2012

miércoles, 26 de septiembre de 2012

jueves, 20 de septiembre de 2012

domingo, 9 de septiembre de 2012

DROP Y ALTER

Drop

Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.

DROP TABLE 'NOMBRE_TABLA';



Alter

Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.

ALTER TABLE 'NOMBRE_TABLA' ADD NUEVO_CAMPO INT UNSIGNED;