SlideShare ist ein Scribd-Unternehmen logo
1 von 11
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.

Weitere ähnliche Inhalte

Was ist angesagt?

Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
josecuartas
 
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 MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
Ivan Porras
 
Uml videotienda (1)
Uml videotienda (1)Uml videotienda (1)
Uml videotienda (1)
cgviviana
 

Was ist angesagt? (20)

Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Consultas en sql básico
Consultas en sql básicoConsultas en sql básico
Consultas en sql básico
 
Trigger Data Base
Trigger Data BaseTrigger Data Base
Trigger Data Base
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Sql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datosSql DDL Lenguaje de definición de datos
Sql DDL Lenguaje de definición de datos
 
Buses Arquitectura de computadoras
Buses Arquitectura de computadoras Buses Arquitectura de computadoras
Buses Arquitectura de computadoras
 
Taller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 ConectividadTaller de Base de Datos - Unidad 7 Conectividad
Taller de Base de Datos - Unidad 7 Conectividad
 
Mapa mental de hilos
Mapa mental de hilosMapa mental de hilos
Mapa mental de hilos
 
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
 
2.3 procesos ligeros
2.3 procesos ligeros2.3 procesos ligeros
2.3 procesos ligeros
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Tablas Hash
Tablas HashTablas Hash
Tablas Hash
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Diagrama de casos de usos
Diagrama de casos de usosDiagrama de casos de usos
Diagrama de casos de usos
 
Registros de control y estados de la CPU
Registros de control y estados de la CPURegistros de control y estados de la CPU
Registros de control y estados de la CPU
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Uml videotienda (1)
Uml videotienda (1)Uml videotienda (1)
Uml videotienda (1)
 

Andere mochten auch

Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...Hablando de fortalezay y debilidades...
Hablando de fortalezay y debilidades...
supermai
 
Chevaux de bois.verne
Chevaux de bois.verneChevaux de bois.verne
Chevaux de bois.verne
Renée Gasser
 
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
 

Andere mochten auch (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
 

Ähnlich wie Trigger

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
 
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
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
demoiselle
 
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 o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
Pablo Jose
 

Ähnlich wie 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
 
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
 
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 o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
 
San triggers
San triggersSan triggers
San triggers
 
TRIGGER-ACTIVADORES
TRIGGER-ACTIVADORESTRIGGER-ACTIVADORES
TRIGGER-ACTIVADORES
 
TRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORESTRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORES
 

Mehr von 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.