SlideShare una empresa de Scribd logo
PL/SQL Sesión 4 Triggers: Disparadores o Activadores  Ing.  Mauricio Bedoya
TRIGGER Un Trigger en PLSQL es un tipo especial de procedimiento almacenado asociado con una tabla de la base de datos Oracle y que se "dispara" (is triggered) cada vez que se ejecuta sobre dicha tabla una sentencia INSERT, una sentencia UPDATE o una sentencia DELETE, es decir, es un procedimiento que permite realizar distintas operaciones cuando un registro de una tabla Oracle es actualizado o borrado, o cuando se añade un registro nuevo a dicha tabla. Hay muchas circunstancias en las que el uso de un trigger PL/SQL puede ser extremadamente útil, por ejemplo: - Cuando los datos de una tabla son generados desde otro tipo de procedimientos y se necesita controlar los valores que toman algunos campos determinados de la tabla en cuestión.
TRIGGER - Para duplicar los contenidos de una tabla automáticamente y en tiempo real. - Para implementar complejas restricciones sobre los valores que pueden tomar los campos de una tabla Oracle, es decir, cuando los CONSTRAINTS que se pueden definir sobre una tabla son insuficientes. - Para controlar las modificaciones de los valores de los campos de una tabla (auditorías). - Para incrementar automáticamente los valores de un campo.
TRIGGER - Para realizar actualizaciones de una tabla en cascada. - Para modificar campos o registros de una tabla que un usuario no puede modificar directamente. Los triggers PL/SQL constituyen una potente herramienta para mantener la integridad de la base de datos, ya que pueden llevar a cabo cualquier acción que sea necesaria para el mantenimiento de dicha integridad.
TRIGGER  Los triggers PLSQL pueden llamar a otros procedimientos y disparar otros triggers, pero no admiten parámetros y no pueden ser invocados desde otros procedimientos PLSQL.  Los triggers están almacenados en la tabla catálogo del sistema como parte de las propiedades de una tabla.
TIPOS  Los triggers PLSQL pueden actuar antes o después de que se realice una inserción, un borrado o una actualización de un registro de la tabla Oracle involucrada. Se pueden definir triggers PL/SQL diferentes para cada tipo de evento (INSERT, UPDATE, DELETE) pero lo más lógico es crear un único trigger para todos los eventos y usar una sentencia IF para distinguir que acción realizar dependiendo del evento. Por otro lado los triggers pueden ser a nivel de registro (row) o a nivel de sentencia (statement).  - A nivel de registro o fila el trigger PL/SQL se ejecuta cada vez que un registro es actualizado, insertado o borrado.
TIPOS  - A nivel de sentencia, el trigger se ejecuta una vez que la sentencia PL/SQL INSERT, UPDATE o INSERT se completa. Obviamente en este caso el trigger sólo puede ser ejecutado después (AFTER) de que se ejecute dicha sentencia.
VENTAJAS  Estandarización: Un solo procedimiento controla las acciones que pueden realizar el resto de procedimientos sobre una tabla Oracle específica. Eficiencia: Cuando un trigger es analizado por el optimizador Oracle, el plan de ejecución se almacena en la memoria virtual del servidor, con lo cual, si se vuelve a disparar el trigger PLSQL, este se ejecuta instantáneamente ya que existe una copia del plan de ejecución en la memoria Seguridad: Aumentan la seguridad porque permiten restringir el acceso de los usuarios a los datos de las tablas, al no poder éstos modificar o acceder a los mismos directamente. Las acciones que realiza un trigger normalmente se limitan en base a los permisos que tiene el usuario que creo la tabla involucrada y no en base a los permisos que tiene el usuario que disparó el trigger. .
SINTAXIS  CREATE OR REPLACE TRIGGER nombre-del-trigger [FOLLOWS nombre-otro-trigger] [BEFORE/AFTER] [INSERT/DELETE/UPDATE/UPDATE OF lista-columnas]  ON nombre-tabla [REFERENCING [OLD AS nombre-antiguo][NEW AS nombre-nuevo]]  [FOR EACH ROW/FOR EACH STATEMENT] [WHEN {condiciones}] {Bloque estándar de sentencias PL/SQL... BEGIN, EXCEPTION}
ACLARACIONES La diferencia entre UPDATE y UPDATE OF lista-columnas es que, en el segundo caso, el trigger PL/SQL se ejecuta sólo cuando se modifica alguna de las columnas de la lista y, en el primer caso, el trigger se ejecuta en caso de que cualquiera de las columnas de la tabla sea modificada. La cláusula FOLLOWS se utiliza para determinar el orden en que se deben ejecutar diferentes triggers del mismo tipo (INSERT, DELETE o UPDATE) que se disparan al mismo tiempo sobre una misma tabla. Así el trigger que está siendo creado se ejecutará después del trigger indicado en la cláusula FOLLOWS (sólo disponible para la versión 11g de la base de datos Oracle). La cláusula REFERENCING permite referirnos con el nombre que nosotros indiquemos (por defecto los nombres son old y new) al valor antiguo (old) de un registro que ha sido borrado o actualizado o al valor nuevo (new) de un registro que ha sido actualizado o insertado. Yo, sinceramente, no le veo una utilidad evidente a esta cláusula debido a que los valores por defecto son suficientemente explicativos. La cláusula WHEN determina que el trigger PLSQL se disparé sólo para los registros que cumplen la condición de la cláusula. Esta cláusula sólo se puede usar en triggers a nivel de registro.
EJEMPLO CREATE TRIGGER tr1_empleados BEFORE INSERT OR UPDATE OF salario ON empleados FOR EACH ROW WHEN (:new.salario > 5000); BEGIN UPDATE empleados SET salario = 5000 WHERE empleado_id = :new.empleado_id; END; En este ejemplo, si insertamos o actualizamos el registro de un empleado de manera que su salario sea superior a 5000 euros, el trigger PL/SQL actualizará dicho salario al valor de 5000 euros independientemente del salario que nosotros hayamos insertado o introducido al modificar el registro.

Más contenido relacionado

PDF
Triggers o disparadores en MySQL
PDF
Creación de tablas y relaciones en mysql workbench
PDF
DOCX
EJERCICIOS DE SQLl
PPTX
Estudio Complejidad de algoritmos
PPTX
OCL en Arquitecturas dirigidas por Modelos
PPTX
Analizador Sintáctico
Triggers o disparadores en MySQL
Creación de tablas y relaciones en mysql workbench
EJERCICIOS DE SQLl
Estudio Complejidad de algoritmos
OCL en Arquitecturas dirigidas por Modelos
Analizador Sintáctico

La actualidad más candente (20)

PPTX
2 2 estilos arquitectonicos
PDF
herramientas case
PPTX
Manejo de triggers en sql server
DOC
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
PPTX
Procesos e Hilos en los Sistemas Operativos
PDF
Requerimientos en Ingenieria de Software
PDF
Lenguajes autómatas.
PDF
Ensamblador y lenguaje c
PPTX
Topicos Avanzados de Programacion Unidad 1 Eventos
PPTX
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
PPTX
Diapositivas MySQL.pptx
PDF
ESPRESIONES REGULARES
PDF
Transacciones y sql procedural EN MySQL
DOCX
Dispositvos de entrada y salida
PPTX
Protección y Seguridad de los Sistemas Operativos
PDF
P. estructurada vs. programación orientada a objetos
PPTX
Fundamentos de Ingenieria en Requisitos
PPTX
Diseño detallado
PPTX
Mantenimiento preventivo, correctivo y adaptativo
2 2 estilos arquitectonicos
herramientas case
Manejo de triggers en sql server
UNIDAD 1 INTRODUCCIÓN AL LENGUAJE ENSAMBLADOR
Procesos e Hilos en los Sistemas Operativos
Requerimientos en Ingenieria de Software
Lenguajes autómatas.
Ensamblador y lenguaje c
Topicos Avanzados de Programacion Unidad 1 Eventos
Programacion de base de datos - Unidad 1: Conexion a la base de datos con un ...
Diapositivas MySQL.pptx
ESPRESIONES REGULARES
Transacciones y sql procedural EN MySQL
Dispositvos de entrada y salida
Protección y Seguridad de los Sistemas Operativos
P. estructurada vs. programación orientada a objetos
Fundamentos de Ingenieria en Requisitos
Diseño detallado
Mantenimiento preventivo, correctivo y adaptativo
Publicidad

Destacado (20)

DOCX
Sesión12 - Trigger (Oracle)
PPT
Oracle Database Trigger
PPT
Trigger
PPT
Introducción a sql
PPS
Triggers
PPS
Mi tren
PPT
Artes Cesar
PPTX
PDF
Curso práctico sobre redes sociales web social
PPTX
GRUPOD_APLICINFO_16
PPT
Hablando de fortalezay y debilidades...
PPS
Mejor Pps 2008
PPT
Chevaux de bois.verne
PDF
SEO Posicionamiento en la web
DOCX
PPTX
Power p
PPT
ventajas de usar software libre
PDF
Los descubrimientos de colón historias sobre una historia
PPS
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
Sesión12 - Trigger (Oracle)
Oracle Database Trigger
Trigger
Introducción a sql
Triggers
Mi tren
Artes Cesar
Curso práctico sobre redes sociales web social
GRUPOD_APLICINFO_16
Hablando de fortalezay y debilidades...
Mejor Pps 2008
Chevaux de bois.verne
SEO Posicionamiento en la web
Power p
ventajas de usar software libre
Los descubrimientos de colón historias sobre una historia
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
Publicidad

Similar a Trigger (20)

DOCX
Postgres trigger
PPT
U3 - PLSQL - TRIGGERS - conceptos basicos
PPTX
Trigger - Activadores
PPTX
Disparadores Trigger En Sql Y My Sql
PPTX
Disparadores Trigger En Sql Y My Sql
PPTX
Trigger Data Base
PPTX
TRIGGERS DE BASE DE DATOS EN MYSQL WORCKBENCH.pptx
PDF
Dbd triggers
PPT
Semana 12 y 13 subprogramas triggers
PPTX
Triggers o disparadores
PDF
database trig
DOCX
Trabajo grupal - Base de Datos
PDF
BDDII T1-2_TalentoDeBasededatosparaminovia
PDF
Triggers en BD mysql
PPTX
TRIGGERS O DISPARADORES
PPT
nnnmmmgghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhg.ppt
PPTX
CREACION DE TRIGGERS.pptx
DOCX
Triggers en SQL
PPTX
PPT
Disparadores
Postgres trigger
U3 - PLSQL - TRIGGERS - conceptos basicos
Trigger - Activadores
Disparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My Sql
Trigger Data Base
TRIGGERS DE BASE DE DATOS EN MYSQL WORCKBENCH.pptx
Dbd triggers
Semana 12 y 13 subprogramas triggers
Triggers o disparadores
database trig
Trabajo grupal - Base de Datos
BDDII T1-2_TalentoDeBasededatosparaminovia
Triggers en BD mysql
TRIGGERS O DISPARADORES
nnnmmmgghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhg.ppt
CREACION DE TRIGGERS.pptx
Triggers en SQL
Disparadores

Más de Mauricio Bedoya (9)

PPTX
Bi2021.pptx
PPTX
Dashboard.pptx
PPTX
Herramientas BigData.pptx
PPTX
Objetivos
PPT
Proceyfunc
PPT
PPT
PPT
PPT
Bi2021.pptx
Dashboard.pptx
Herramientas BigData.pptx
Objetivos
Proceyfunc

Trigger

  • 1. PL/SQL Sesión 4 Triggers: Disparadores o Activadores Ing. Mauricio Bedoya
  • 2. TRIGGER Un Trigger en PLSQL es un tipo especial de procedimiento almacenado asociado con una tabla de la base de datos Oracle y que se "dispara" (is triggered) cada vez que se ejecuta sobre dicha tabla una sentencia INSERT, una sentencia UPDATE o una sentencia DELETE, es decir, es un procedimiento que permite realizar distintas operaciones cuando un registro de una tabla Oracle es actualizado o borrado, o cuando se añade un registro nuevo a dicha tabla. Hay muchas circunstancias en las que el uso de un trigger PL/SQL puede ser extremadamente útil, por ejemplo: - Cuando los datos de una tabla son generados desde otro tipo de procedimientos y se necesita controlar los valores que toman algunos campos determinados de la tabla en cuestión.
  • 3. TRIGGER - Para duplicar los contenidos de una tabla automáticamente y en tiempo real. - Para implementar complejas restricciones sobre los valores que pueden tomar los campos de una tabla Oracle, es decir, cuando los CONSTRAINTS que se pueden definir sobre una tabla son insuficientes. - Para controlar las modificaciones de los valores de los campos de una tabla (auditorías). - Para incrementar automáticamente los valores de un campo.
  • 4. TRIGGER - Para realizar actualizaciones de una tabla en cascada. - Para modificar campos o registros de una tabla que un usuario no puede modificar directamente. Los triggers PL/SQL constituyen una potente herramienta para mantener la integridad de la base de datos, ya que pueden llevar a cabo cualquier acción que sea necesaria para el mantenimiento de dicha integridad.
  • 5. TRIGGER Los triggers PLSQL pueden llamar a otros procedimientos y disparar otros triggers, pero no admiten parámetros y no pueden ser invocados desde otros procedimientos PLSQL. Los triggers están almacenados en la tabla catálogo del sistema como parte de las propiedades de una tabla.
  • 6. TIPOS Los triggers PLSQL pueden actuar antes o después de que se realice una inserción, un borrado o una actualización de un registro de la tabla Oracle involucrada. Se pueden definir triggers PL/SQL diferentes para cada tipo de evento (INSERT, UPDATE, DELETE) pero lo más lógico es crear un único trigger para todos los eventos y usar una sentencia IF para distinguir que acción realizar dependiendo del evento. Por otro lado los triggers pueden ser a nivel de registro (row) o a nivel de sentencia (statement). - A nivel de registro o fila el trigger PL/SQL se ejecuta cada vez que un registro es actualizado, insertado o borrado.
  • 7. TIPOS - A nivel de sentencia, el trigger se ejecuta una vez que la sentencia PL/SQL INSERT, UPDATE o INSERT se completa. Obviamente en este caso el trigger sólo puede ser ejecutado después (AFTER) de que se ejecute dicha sentencia.
  • 8. VENTAJAS Estandarización: Un solo procedimiento controla las acciones que pueden realizar el resto de procedimientos sobre una tabla Oracle específica. Eficiencia: Cuando un trigger es analizado por el optimizador Oracle, el plan de ejecución se almacena en la memoria virtual del servidor, con lo cual, si se vuelve a disparar el trigger PLSQL, este se ejecuta instantáneamente ya que existe una copia del plan de ejecución en la memoria Seguridad: Aumentan la seguridad porque permiten restringir el acceso de los usuarios a los datos de las tablas, al no poder éstos modificar o acceder a los mismos directamente. Las acciones que realiza un trigger normalmente se limitan en base a los permisos que tiene el usuario que creo la tabla involucrada y no en base a los permisos que tiene el usuario que disparó el trigger. .
  • 9. SINTAXIS CREATE OR REPLACE TRIGGER nombre-del-trigger [FOLLOWS nombre-otro-trigger] [BEFORE/AFTER] [INSERT/DELETE/UPDATE/UPDATE OF lista-columnas] ON nombre-tabla [REFERENCING [OLD AS nombre-antiguo][NEW AS nombre-nuevo]] [FOR EACH ROW/FOR EACH STATEMENT] [WHEN {condiciones}] {Bloque estándar de sentencias PL/SQL... BEGIN, EXCEPTION}
  • 10. ACLARACIONES La diferencia entre UPDATE y UPDATE OF lista-columnas es que, en el segundo caso, el trigger PL/SQL se ejecuta sólo cuando se modifica alguna de las columnas de la lista y, en el primer caso, el trigger se ejecuta en caso de que cualquiera de las columnas de la tabla sea modificada. La cláusula FOLLOWS se utiliza para determinar el orden en que se deben ejecutar diferentes triggers del mismo tipo (INSERT, DELETE o UPDATE) que se disparan al mismo tiempo sobre una misma tabla. Así el trigger que está siendo creado se ejecutará después del trigger indicado en la cláusula FOLLOWS (sólo disponible para la versión 11g de la base de datos Oracle). La cláusula REFERENCING permite referirnos con el nombre que nosotros indiquemos (por defecto los nombres son old y new) al valor antiguo (old) de un registro que ha sido borrado o actualizado o al valor nuevo (new) de un registro que ha sido actualizado o insertado. Yo, sinceramente, no le veo una utilidad evidente a esta cláusula debido a que los valores por defecto son suficientemente explicativos. La cláusula WHEN determina que el trigger PLSQL se disparé sólo para los registros que cumplen la condición de la cláusula. Esta cláusula sólo se puede usar en triggers a nivel de registro.
  • 11. EJEMPLO CREATE TRIGGER tr1_empleados BEFORE INSERT OR UPDATE OF salario ON empleados FOR EACH ROW WHEN (:new.salario > 5000); BEGIN UPDATE empleados SET salario = 5000 WHERE empleado_id = :new.empleado_id; END; En este ejemplo, si insertamos o actualizamos el registro de un empleado de manera que su salario sea superior a 5000 euros, el trigger PL/SQL actualizará dicho salario al valor de 5000 euros independientemente del salario que nosotros hayamos insertado o introducido al modificar el registro.