Disparadores

7,493
-1

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,493
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
213
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Disparadores

  1. 1. DISPARADORES Y PROCEDIMIENTOS
  2. 2. DISPARADORES <ul><li>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: </li></ul><ul><li>- Realizar una consulta. </li></ul><ul><li>- Validar un dato. </li></ul><ul><li>- Hacer una operación DML inserta, modificar </li></ul><ul><li> o eliminar registros de una base de datos. </li></ul>
  3. 3. DISPARADORES <ul><li>En definitiva los DISPARADORES (TIGGERS) son eventos a nivel de tabla que se ejecutan automáticamente cuando se realizan ciertas operaciones sobre la tabla. </li></ul><ul><li>Existen varios tipos de disparadores, dependiendo del tipo de transacción de disparo y el nivel en el que se ejecuta el disparador (trigger): </li></ul>
  4. 4. DISPARADORES <ul><li>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 . </li></ul><ul><li>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 . </li></ul>
  5. 5. DISPARADORES <ul><li>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. </li></ul><ul><li>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. </li></ul>
  6. 6. DISPARADORES <ul><li>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. </li></ul><ul><li>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. </li></ul>
  7. 7. 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 Estructura de Disparadores Una definición del disparador consiste en los siguiente componentes:
  8. 8. PROCEDIMIENTOS ALMACENADOS <ul><li>Un procedimiento es un conjunto de sentencias de SQL y que se guarda en la base de datos </li></ul><ul><li>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 </li></ul><ul><li>En los procedimientos se pueden crear tablas temporales que solamente existirán durante la ejecución del mismo </li></ul><ul><li>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 </li></ul><ul><li>Se define una tabla temporal al anteponer el símbolo “ # ” a su nombre </li></ul>
  9. 9. Crear un Procedimiento <ul><li>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. </li></ul><ul><li>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). </li></ul><ul><li>Sintaxis </li></ul><ul><li>CREATE PROCEDURE procedure_name [ ; number ]     [ { @ parameter data_type }         ] go </li></ul>
  10. 10. Argumentos <ul><li>procedure_name </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul>
  11. 11. <ul><li>; number </li></ul><ul><li>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 &quot;orders&quot; 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 . </li></ul>
  12. 12. <ul><li>@ parameter </li></ul><ul><li>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. </li></ul><ul><li>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. </li></ul>
  13. 13. <ul><li>data_type </li></ul><ul><li>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. </li></ul>
  14. 14. Eliminar y Ejecutar un Procedimiento <ul><li>Sintaxis para eliminar </li></ul><ul><li>drop procedure nombre del procedimiento </li></ul><ul><li>Sintaxis para ejecutar </li></ul><ul><li>nombre del procedimiento parámetro 1, parámetro 2, parámetro n </li></ul><ul><li>Ejecutar el procedimiento nombre del procedimiento </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×