2. DISPARADORES
También conocidos como TRIGGERS , es un bloque
de código almacenado en base de datos que se activa
cuando se pulsa una determinada tecla u ocurre un
determinado evento automáticamente, un disparador
esta asociado a una tabla como puede ser:
- Realizar una consulta.
- Validar un dato.
- Hacer una operación DML inserta, modificar
o eliminar registros de una base de datos.
3. DISPARADORES
En definitiva los DISPARADORES
(TIGGERS) son eventos a nivel de tabla que se
ejecutan automáticamente cuando se realizan
ciertas operaciones sobre la tabla.
Existen varios tipos de disparadores,
dependiendo del tipo de transacción de disparo
y el nivel en el que se ejecuta el disparador
(trigger):
4. DISPARADORES
1.- Disparadores de nivel de fila: se ejecutan una vez
para cada fila afectada por una instrucción DML. Los
disparadores de nivel de fila se crean utilizando la
cláusula for each row en el comando create trigger.
2.- Disparadores de nivel de instrucción: se ejecutan
una vez para cada instrucción DML. Por ejemplo, si
una única instrucción INSERT inserta 500 filas en una
tabla un disparador de nivel de instrucción para dicha
tabla sólo se ejecutará una vez. Los disparadores de
nivel de instrucción son el tipo predeterminado que se
crea con el comando create trigger.
5. DISPARADORES
3.- Disparadores Before y After: puesto que los
disparadores son ejecutados por sucesos, puede
establecerse que se produzcan inmediatamente antes
(before) o después (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, podría usar un disparador
INSTEAD OF en una vista para gestionar las
inserciones en una tabla o para actualizar múltiples
tablas que son parte de una vista.
6. 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 sesión, conexiones y
desconexiones. Puede utilizar este tipo de disparador para
automatizar el mantenimiento de la base de datos o las acciones
de auditoría.
7. Estructura de Disparadores
Una definición del disparador consiste en los
siguiente componentes:
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.- Restricción del disparador (Solo para
for each row disparador)
(when <Condición>)
6.- Cuerpo del disparador
8. 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 ejecución 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 existirán durante la ejecución del mismo
Los valores resultantes de la ejecución del procedimiento serán
obtenidos de la última consulta especificada, siempre y cuando
no se envíen a una tabla temporal
Se define una tabla temporal al anteponer el símbolo “#” a su
nombre
9. Crear un Procedimiento
Crea un procedimiento almacenado, que es una colección
guardada de instrucciones Transact-SQL que puede tomar y
devolver los parámetros proporcionados por el usuario.
Los procedimientos se pueden crear para uso permanente o
para uso temporal en una sesión (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
10. 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 numérico simple
(#procedure_name) para los procedimientos temporales locales y un
signo numérico 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.
11. ;number
Es un entero opcional utilizado para agrupar
procedimientos del mismo nombre de forma que se
puedan quitar juntos con una única instrucción DROP
PROCEDURE. Por ejemplo, los procedimientos
utilizados con una aplicación llamada "orders" se pueden
llamar orderproc;1, orderproc;2, etc. La instrucción
DROP PROCEDURE orderproc quita el grupo
completo. Si el nombre contiene identificadores
delimitados, el número no debe incluirse como parte del
identificador; utilice el delimitador adecuado sólo
alrededor de procedure_name.
12. @parameter
Es un parámetro del procedimiento. En una instrucción
CREATE PROCEDURE se pueden declarar uno o más
parámetros. El usuario debe proporcionar el valor de cada
parámetro declarado cuando se ejecuta el procedimiento, a
menos que se haya definido un valor predeterminado para el
parámetro. Un procedimiento almacenado puede tener un
máximo de 2.100 parámetros.
Especifique un nombre de parámetro con un signo (@) como el
primer carácter. Los nombres de los parámetros deben cumplir
las reglas de los identificadores. Los parámetros son locales para
el procedimiento; los mismos nombres de parámetro se pueden
utilizar en otros procedimientos. De forma predeterminada, los
parámetros sólo 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.
13. data_type
Es el tipo de datos del parámetro. Todos los
tipos de datos, incluidos text, ntext e image, se
pueden utilizar como parámetros de un
procedimiento almacenado.
14. Eliminar y Ejecutar un
Procedimiento
Sintaxis para eliminar
drop procedure nombre del procedimiento
Sintaxis para ejecutar
nombre del procedimiento parámetro 1, parámetro 2,
parámetro n
Ejecutar el procedimiento nombre del
procedimiento