lunes, 26 de noviembre de 2012

Procedimientos almacenados y disparadores (trigger)


Disparador
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 instrucción que permite la creación de un trigger es:
CREATE TRIGGER
 y su sintaxis es la siguiente:
CREATE TRIGGER Nombre_del_Trigger ON Nombre_de_la_tabla FOR {INSERT,UPDATE,DELETE} AS (Sentecias_SQL)

Las ventajas de usar los Triggers son:
·         La entrada en vigor automática de restricciones de los datos, hace que los usuarios entren sólo valores válidos.
·         El mantenimiento de la aplicación se reduce, los cambios a un triggers se refleja automáticamente en todas las aplicaciones que tienen que ver con la tabla sin la necesidad de recompilar o relinquear.


Ejemplo 1



Ejemplo 2


Ejemplo 3                 



Procedimientos 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.

La sintaxis de dicha instrucción es básicamente la siguiente:
CREATE PROCEDURE Nombre_del_procedimiento [Lista_de_parámetros] AS (Sentencias SQL)[RETURN [Valor]]



Cursores


¿Cuándo  debemos usar cursores?
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.
 Hay que usarlos cuando no haya otra forma de manipular conjuntos de datos en una sola instrucción.

¿Como crear y  llamar un proceso en mysql?
Los procedimientos almacenados y rutinas se crean con comandos CREATE PROCEDURE y CREATE FUNCTION .
Un procedimiento se invoca usando un comando CALL , y sólo puede pasar valores usando variables de salida
Sintaxis:
CREATE PROCEDURE nombre_del_procedimiento ([parámetros[,...]]) [characteristicas ...] cuerpo

¿Como crear una función en mysql?
Se crean con el comando CREATE FUNCTION .
Una función puede llamarse desde dentro de un comando como cualquier otra función (esto es, invocando el nombre de la función), y puede retornar un valor escalar.
Hay dos formas de añadir nuevas funciones a MySQL:
•Puede añadir funciones con la interfaz de funciones definidas de usuario (UDF) (N.del T. Acrónimo para User Defined Functions). Las funciones definidas por el usuario se ocmpilan como ficheros objeto y se añaden y borran del servidor dinámicamente usando los comandos CREATE FUNCTION y DROP FUNCTION .
•Puede añadir funciones como funciones nativas MySQL. Se compilan en el servidor mysqld y están disponibles permanentemente

Como crear y ejecutar un procedimiento






lunes, 12 de noviembre de 2012

Cuestionario: Transacciones


¿Qué es una transacción?
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 (la transacción consiste en todas las operaciones que se ejecutan entre 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 calificacada como transacción.
¿Qué significa Tx?
Transaccion
¿Para que 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.
Defina Integridad de datos
Hace referencia a que todas las características de los datos (reglas, definiciones, fechas, etc) deben ser correctos para que los datos estén completos.
Defina concurrencia
La concurrencia es la propiedad de los sistemas que permiten que múltiples procesos sean ejecutados al mismo tiempo, y que potencialmente puedan interactuar entre sí
Defina Grado de consistencia
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
Modelo de estructura de transacciones: Considerar si las transacciones son planas o 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 conjuntó 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.


Creacion & Privilegios de Usuarios