Está en la página 1de 14

DISPARADORES Y PROCEDIMIENTOS

DISPARADORES

Tambin conocidos como TRIGGERS , es un bloque de cdigo almacenado en base de datos que se activa cuando se pulsa una determinada tecla u ocurre un determinado evento automticamente, un disparador esta asociado a una tabla como puede ser: - Realizar una consulta. - Validar un dato. - Hacer una operacin DML inserta, modificar o eliminar registros de una base de datos.

DISPARADORES

En definitiva los DISPARADORES (TIGGERS) son eventos a nivel de tabla que se ejecutan automticamente cuando se realizan ciertas operaciones sobre la tabla. Existen varios tipos de disparadores, dependiendo del tipo de transaccin de disparo y el nivel en el que se ejecuta el disparador (trigger):

DISPARADORES

1.- Disparadores de nivel de fila: se ejecutan una vez para cada fila afectada por una instruccin DML. Los disparadores de nivel de fila se crean utilizando la clusula for each row en el comando create trigger. 2.- Disparadores de nivel de instruccin: se ejecutan una vez para cada instruccin DML. Por ejemplo, si una nica instruccin INSERT inserta 500 filas en una tabla un disparador de nivel de instruccin para dicha tabla slo se ejecutar una vez. Los disparadores de nivel de instruccin son el tipo predeterminado que se crea con el comando create trigger.

DISPARADORES

3.- Disparadores Before y After: puesto que los disparadores son ejecutados por sucesos, puede establecerse que se produzcan inmediatamente antes (before) o despus (after) de dichos sucesos. 4.- Disparadores Instead Of: puede utilizar INSTEAD OF para indicar a Oracle lo que tiene que hacer en lugar de realizar las acciones que invoca el disparador. Por ejemplo, podra usar un disparador INSTEAD OF en una vista para gestionar las inserciones en una tabla o para actualizar mltiples tablas que son parte de una vista.

DISPARADORES

5.- Disparadores de esquema: puede crear disparadores sobre operaciones en el nivel de esquema tales como create table, alter table, drop table, audit, rename, truncate y revoke. Puede incluso crear disparadores para impedir que los usuarios eliminen sus propias tablas. En su mayor parte, los disparadores de nivel de esquema proporcionan dos capacidades: impedir operaciones DDL y proporcionar una seguridad adicional que controle las operaciones DDL cuando stas se producen. 6.- Disparadores en nivel de base de datos: puede crear disparadores que se activen al producirse sucesos de la base de datos, incluyendo errores, inicios de sesin, conexiones y desconexiones. Puede utilizar este tipo de disparador para automatizar el mantenimiento de la base de datos o las acciones de auditora.

Una definicin del disparador consiste en los siguiente componentes:

Estructura de Disparadores

1.- Nombre del trigger. (create [or replace] trigger <nombre del trigger>)
2.- Punto de tiempo del trigger (before | after)

3.- Disparando eventos (insert or update [of <columnas>] or delete <tabla>)


4.- Tipo de disparador (opcional) (for each row) 5.- Restriccin del disparador (Solo para for each row disparador) (when <Condicin>) 6.- Cuerpo del disparador

PROCEDIMIENTOS ALMACENADOS

Un procedimiento es un conjunto de sentencias de SQL y que se guarda en la base de datos Con los procedimientos se amplia la velocidad de ejecucin de las consultas sin reducir la eficiencia en la respuesta del servidor de base de datos. Esto porque el procedimiento es compilado en memoria virtual del cliente En los procedimientos se pueden crear tablas temporales que solamente existirn durante la ejecucin del mismo Los valores resultantes de la ejecucin del procedimiento sern obtenidos de la ltima consulta especificada, siempre y cuando no se enven a una tabla temporal Se define una tabla temporal al anteponer el smbolo # a su nombre

Crear un Procedimiento

Crea un procedimiento almacenado, que es una coleccin guardada de instrucciones Transact-SQL que puede tomar y devolver los parmetros proporcionados por el usuario. Los procedimientos se pueden crear para uso permanente o para uso temporal en una sesin (procedimiento local temporal) o para su uso temporal en todas las sesiones (procedimiento temporal global). Sintaxis CREATE PROCEDURE procedure_name [ ; number ] [ { @parameter data_type } ] go

Argumentos
procedure_name

Es el nombre del nuevo procedimiento almacenado. Los nombres de procedimiento deben seguir las reglas de los identificadores y deben ser nicos en la base de datos y para su propietario. Los procedimientos temporales locales o globales se pueden crear precediendo el procedure_name con un signo numrico simple (#procedure_name) para los procedimientos temporales locales y un signo numrico doble (##procedure_name) para los procedimientos temporales globales. El nombre completo, incluidos los signos # o ##, no puede exceder de 128 caracteres. Especificar el nombre del propietario del procedimiento es opcional.

;number Es un entero opcional utilizado para agrupar procedimientos del mismo nombre de forma que se puedan quitar juntos con una nica instruccin DROP PROCEDURE. Por ejemplo, los procedimientos utilizados con una aplicacin llamada "orders" se pueden llamar orderproc;1, orderproc;2, etc. La instruccin DROP PROCEDURE orderproc quita el grupo completo. Si el nombre contiene identificadores delimitados, el nmero no debe incluirse como parte del identificador; utilice el delimitador adecuado slo alrededor de procedure_name.

@parameter Es un parmetro del procedimiento. En una instruccin CREATE PROCEDURE se pueden declarar uno o ms parmetros. El usuario debe proporcionar el valor de cada parmetro declarado cuando se ejecuta el procedimiento, a menos que se haya definido un valor predeterminado para el parmetro. Un procedimiento almacenado puede tener un mximo de 2.100 parmetros. Especifique un nombre de parmetro con un signo (@) como el primer carcter. Los nombres de los parmetros deben cumplir las reglas de los identificadores. Los parmetros son locales para el procedimiento; los mismos nombres de parmetro se pueden utilizar en otros procedimientos. De forma predeterminada, los parmetros slo pueden ocupar el lugar de constantes; no se pueden utilizar en lugar de nombres de tablas, nombres de columnas o nombres de otros objetos de base de datos.

data_type

Es el tipo de datos del parmetro. Todos los tipos de datos, incluidos text, ntext e image, se pueden utilizar como parmetros de un procedimiento almacenado.

Eliminar y Ejecutar un Procedimiento

Sintaxis para eliminar drop procedure nombre del procedimiento Sintaxis para ejecutar nombre del procedimiento parmetro 1, parmetro 2, parmetro n Ejecutar el procedimiento nombre del procedimiento

También podría gustarte