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

La actualidad más candente

Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos Relacional
Gema López
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
Angel Vázquez Patiño
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relaciones
basilioj
 
Programación orientada a objetos (POO) [JAVA]
Programación orientada a objetos (POO) [JAVA]Programación orientada a objetos (POO) [JAVA]
Programación orientada a objetos (POO) [JAVA]
Hack '
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
Alvaro Enrique Ruano
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
José Antonio Sandoval Acosta
 
Base de Datos: Modelo Entidad-Relacion
Base de Datos: Modelo Entidad-RelacionBase de Datos: Modelo Entidad-Relacion
Base de Datos: Modelo Entidad-Relacion
Diego Torres
 
Ejercicios
EjerciciosEjercicios
Ejercicios
Ricardo Tejera
 
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Erivan Martinez Ovando
 
Recuperación de-datos-en-my sql
Recuperación de-datos-en-my sqlRecuperación de-datos-en-my sql
Recuperación de-datos-en-my sql
Francisco Aguilar Smith
 
Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos
Yarquiri Claudio
 
DiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo JkDiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo Jk
guestff0bcb9e
 
Unidad 2. programación estructurada
Unidad 2. programación estructuradaUnidad 2. programación estructurada
Unidad 2. programación estructurada
Alix Indriago
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
José Antonio Sandoval Acosta
 
Generador de frecuencia
Generador de frecuenciaGenerador de frecuencia
Generador de frecuencia
ANTONIO MIGUEL JORDAN GAMITO
 
Seguridad en Base de Datos
Seguridad en Base de DatosSeguridad en Base de Datos
Seguridad en Base de Datos
myriam sarango
 
EVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOSEVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOS
colegio la presentacion duitama
 
Ejercicios de normalizacion
Ejercicios de normalizacionEjercicios de normalizacion
Ejercicios de normalizacion
Patrick Nick Alamo Ramos
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
Cristian Salazar C.
 
Control de-flujo
Control de-flujoControl de-flujo
Control de-flujo
Castroso Hernandez
 

La actualidad más candente (20)

Ejemplo de Base de Datos Relacional
Ejemplo de Base de Datos RelacionalEjemplo de Base de Datos Relacional
Ejemplo de Base de Datos Relacional
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relaciones
 
Programación orientada a objetos (POO) [JAVA]
Programación orientada a objetos (POO) [JAVA]Programación orientada a objetos (POO) [JAVA]
Programación orientada a objetos (POO) [JAVA]
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrenteTópicos Avanzados de Programación - Unidad 3 programacion concurrente
Tópicos Avanzados de Programación - Unidad 3 programacion concurrente
 
Base de Datos: Modelo Entidad-Relacion
Base de Datos: Modelo Entidad-RelacionBase de Datos: Modelo Entidad-Relacion
Base de Datos: Modelo Entidad-Relacion
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.Convertir Diagrama Entidad-Relacion a Modelo Relacional.
Convertir Diagrama Entidad-Relacion a Modelo Relacional.
 
Recuperación de-datos-en-my sql
Recuperación de-datos-en-my sqlRecuperación de-datos-en-my sql
Recuperación de-datos-en-my sql
 
Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos Presentacion de Modelo entidad -relación de Base de Datos
Presentacion de Modelo entidad -relación de Base de Datos
 
DiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo JkDiseñO De Un Contador Con Flip Flops Tipo Jk
DiseñO De Un Contador Con Flip Flops Tipo Jk
 
Unidad 2. programación estructurada
Unidad 2. programación estructuradaUnidad 2. programación estructurada
Unidad 2. programación estructurada
 
Taller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccionTaller de Base de datos - Unidad 1 SGBD introduccion
Taller de Base de datos - Unidad 1 SGBD introduccion
 
Generador de frecuencia
Generador de frecuenciaGenerador de frecuencia
Generador de frecuencia
 
Seguridad en Base de Datos
Seguridad en Base de DatosSeguridad en Base de Datos
Seguridad en Base de Datos
 
EVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOSEVALUACION DE ALGORTIMOS
EVALUACION DE ALGORTIMOS
 
Ejercicios de normalizacion
Ejercicios de normalizacionEjercicios de normalizacion
Ejercicios de normalizacion
 
Modelo de datos
Modelo de datosModelo de datos
Modelo de datos
 
Control de-flujo
Control de-flujoControl de-flujo
Control de-flujo
 

Destacado

Triggers
TriggersTriggers
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
José Toro
 
Oracle Database Trigger
Oracle Database TriggerOracle Database Trigger
Oracle Database Trigger
Eryk Budi Pratama
 
Trigger
TriggerTrigger
Trigger
Slideshare
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
Marisol Henao
 
Triggers
TriggersTriggers
Triggers
bdatos
 
Mi tren
Mi trenMi tren
Mi tren
Positivismo
 
Artes Cesar
Artes CesarArtes Cesar
Artes Cesar
cesariox
 
Curso práctico sobre redes sociales web social
Curso práctico sobre redes sociales web socialCurso práctico sobre redes sociales web social
Curso práctico sobre redes sociales web social
Luis Chaquea
 
GRUPOD_APLICINFO_16
GRUPOD_APLICINFO_16GRUPOD_APLICINFO_16
GRUPOD_APLICINFO_16
valeriaiero
 
Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...
supermai
 
Mejor Pps 2008
Mejor Pps 2008Mejor Pps 2008
Mejor Pps 2008
hacker_cris
 
Chevaux de bois.verne
Chevaux de bois.verneChevaux de bois.verne
Chevaux de bois.verneRenée Gasser
 
SEO Posicionamiento en la web
SEO Posicionamiento en la webSEO Posicionamiento en la web
SEO Posicionamiento en la web
Luis Chaquea
 
internet
internet internet
ventajas de usar software libre
ventajas de usar software libreventajas de usar software libre
ventajas de usar software libre
hobbit1994
 
Los descubrimientos de colón historias sobre una historia
Los descubrimientos de colón historias sobre una historiaLos descubrimientos de colón historias sobre una historia
Los descubrimientos de colón historias sobre una historia
cenobio popoca
 
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
Propuesta Para El Ecuador Sobre La Sociedad De La InformacionPropuesta Para El Ecuador Sobre La Sociedad De La Informacion
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
guestfb9b2f
 

Destacado (20)

Triggers
TriggersTriggers
Triggers
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
Oracle Database Trigger
Oracle Database TriggerOracle Database Trigger
Oracle Database Trigger
 
Trigger
TriggerTrigger
Trigger
 
Introducción a sql
Introducción a  sqlIntroducción a  sql
Introducción a sql
 
Triggers
TriggersTriggers
Triggers
 
Mi tren
Mi trenMi tren
Mi tren
 
Artes Cesar
Artes CesarArtes Cesar
Artes Cesar
 
Vente d'entreprise 2013
Vente d'entreprise 2013Vente d'entreprise 2013
Vente d'entreprise 2013
 
Curso práctico sobre redes sociales web social
Curso práctico sobre redes sociales web socialCurso práctico sobre redes sociales web social
Curso práctico sobre redes sociales web social
 
GRUPOD_APLICINFO_16
GRUPOD_APLICINFO_16GRUPOD_APLICINFO_16
GRUPOD_APLICINFO_16
 
Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...
 
Mejor Pps 2008
Mejor Pps 2008Mejor Pps 2008
Mejor Pps 2008
 
Chevaux de bois.verne
Chevaux de bois.verneChevaux de bois.verne
Chevaux de bois.verne
 
SEO Posicionamiento en la web
SEO Posicionamiento en la webSEO Posicionamiento en la web
SEO Posicionamiento en la web
 
internet
internet internet
internet
 
Power p
Power pPower p
Power p
 
ventajas de usar software libre
ventajas de usar software libreventajas de usar software libre
ventajas de usar software libre
 
Los descubrimientos de colón historias sobre una historia
Los descubrimientos de colón historias sobre una historiaLos descubrimientos de colón historias sobre una historia
Los descubrimientos de colón historias sobre una historia
 
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
Propuesta Para El Ecuador Sobre La Sociedad De La InformacionPropuesta Para El Ecuador Sobre La Sociedad De La Informacion
Propuesta Para El Ecuador Sobre La Sociedad De La Informacion
 

Similar a Trigger

Trigger-activadores en sql server
Trigger-activadores en sql serverTrigger-activadores en sql server
Trigger-activadores en sql server
Vicente Alberca
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
LuiS YmAY
 
Trigger - Activadores
Trigger - ActivadoresTrigger - Activadores
Trigger - Activadores
Magaly Portocarrero Labajos
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
Lisbeth Ocaña Bueno
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
Delsi Yakelin Huaman Villanueva
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
Andres Ortega
 
database trig
database trigdatabase trig
database trig
Cristian Villagra
 
CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptx
MrKevinKR
 
Disparadores.pptx
Disparadores.pptxDisparadores.pptx
Disparadores.pptx
Enrique Lobato Pérez
 
Dbd triggers
Dbd triggersDbd triggers
Dbd triggers
edwquiv
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
Roberto Ramírez Amaya
 
Disparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My SqlDisparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My Sql
guest9c891000
 
Disparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My SqlDisparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My Sql
yareli
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
demoiselle
 
Trigger - INSERT- Base de Datos 2 .pptx
Trigger - INSERT- Base de Datos 2  .pptxTrigger - INSERT- Base de Datos 2  .pptx
Trigger - INSERT- Base de Datos 2 .pptx
CarlosManzanares18
 
Disparadores
DisparadoresDisparadores
Disparadores
Adriana Becerra
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
Adriana Becerra
 
Semana 12 y 13 subprogramas triggers
Semana 12 y 13 subprogramas triggersSemana 12 y 13 subprogramas triggers
Semana 12 y 13 subprogramas triggers
victdiazm
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
demoiselle
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
Pablo Jose
 

Similar a Trigger (20)

Trigger-activadores en sql server
Trigger-activadores en sql serverTrigger-activadores en sql server
Trigger-activadores en sql server
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
Trigger - Activadores
Trigger - ActivadoresTrigger - Activadores
Trigger - Activadores
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
 
database trig
database trigdatabase trig
database trig
 
CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptx
 
Disparadores.pptx
Disparadores.pptxDisparadores.pptx
Disparadores.pptx
 
Dbd triggers
Dbd triggersDbd triggers
Dbd triggers
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
 
Disparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My SqlDisparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My Sql
 
Disparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My SqlDisparadores Trigger En Sql Y My Sql
Disparadores Trigger En Sql Y My Sql
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
 
Trigger - INSERT- Base de Datos 2 .pptx
Trigger - INSERT- Base de Datos 2  .pptxTrigger - INSERT- Base de Datos 2  .pptx
Trigger - INSERT- Base de Datos 2 .pptx
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
 
Semana 12 y 13 subprogramas triggers
Semana 12 y 13 subprogramas triggersSemana 12 y 13 subprogramas triggers
Semana 12 y 13 subprogramas triggers
 
TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
 

Más de Mauricio Bedoya

Bi2021.pptx
Bi2021.pptxBi2021.pptx
Bi2021.pptx
Mauricio Bedoya
 
Dashboard.pptx
Dashboard.pptxDashboard.pptx
Dashboard.pptx
Mauricio Bedoya
 
Herramientas BigData.pptx
Herramientas BigData.pptxHerramientas BigData.pptx
Herramientas BigData.pptx
Mauricio Bedoya
 
Objetivos
ObjetivosObjetivos
Objetivos
Mauricio Bedoya
 
Proceyfunc
ProceyfuncProceyfunc
Proceyfunc
Mauricio Bedoya
 
Control
ControlControl
Bloques
BloquesBloques
Bloques
BloquesBloques
Script
ScriptScript

Más de Mauricio Bedoya (9)

Bi2021.pptx
Bi2021.pptxBi2021.pptx
Bi2021.pptx
 
Dashboard.pptx
Dashboard.pptxDashboard.pptx
Dashboard.pptx
 
Herramientas BigData.pptx
Herramientas BigData.pptxHerramientas BigData.pptx
Herramientas BigData.pptx
 
Objetivos
ObjetivosObjetivos
Objetivos
 
Proceyfunc
ProceyfuncProceyfunc
Proceyfunc
 
Control
ControlControl
Control
 
Bloques
BloquesBloques
Bloques
 
Bloques
BloquesBloques
Bloques
 
Script
ScriptScript
Script
 

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.