SlideShare una empresa de Scribd logo
Subprogramas: Triggers
      Semana 11/1
Aprendizajes esperados

• Construye procedimientos almacenados, triggers de base de
  datos, cursores y funciones que ayuden o implementen
  directamente soluciones a la lógica de negocio recogida en la
  captura de requerimientos de un sistema
• Discernir cuando usar un procedimientos almacenados, trigger de
  base de datos, cursor y función para implementar una solución a
  la lógica de negocio recogida en la captura de requerimientos de
  un sistema
Conceptos Claves
• Los triggers (disparadores) son bloques asociados a una tabla y que se
  ejecutan automáticamente cuando ocurre una operación DML (Insert,
  Delete, Update) sobre esa tabla
• No es recomendable crear triggers muy complejos o una cantidad
  numerosa para una tabla, ya que la performance puede verse afectada
• Un trigger no puede llevar el comando Commit o Rollback (ni los bloques
  que dicho trigger invoque)
• Los triggers sobre tablas no son los únicos existentes. También existen
  sobre vistas, o sobre base de datos o esquema
Sintáxis
CREATE [OR REPLACE] TRIGGER «nombre_trigger»{BEFORE|AFTER}
{DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
[OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}
ON «nombre_tabla»
[REFERENCING OLD as «nombre_anterior», NEW as «nombre_nuevo»]
[FOR EACH ROW [WHEN («condicion»)]]
DECLARE …….BEGIN ......
[EXCEPTION]
….
 END «nombre_trigger»;
Sintaxis
• Donde:
• {BEFORE|AFTER} : Indica si el trigger se ejecuta antes o después de la sentencia que disparó al trigger
•    {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]
    [OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}: Indica cual (o cuales) evento está asociado al trigger.
    Opcionalmente, para el caso de actualización se puede especificar las columnas cuya modificación dispara al trigger
• [REFERENCING OLD as «nombre_anterior», NEW as «nombre_nuevo»]: Opcional. Asigna nombre a la forma como se
  referenciará a los registros antes o despues de la ejecución del (los) evento asociado
• [FOR EACH ROW [WHEN («condicion»)]]: Indica si el trigger se ejecuta a nivel de fila, es decir, por cada registro afectado por
  el trigger. Opcionalmente se puede agregar una condición para filtrar los registros afectados
Ejemplo de trigger




       Trigger
      Declarado
Ejemplo de trigger
• Para que se ejecute el trigger, debemos invocar la
  sentencia DML asociada (insert). Consideremos que
  dicho trigger asigna un identificador cada vez se ingresa
  un nuevo registro a la tabla auto




 • Fijarse que en el insert no
   se asignó valor al campo
   «auto_id». Sin embargo,
   en la tabla aparece un
   valor. Eso implica que
   nuestro trigger ha
Variables OLD y NEW
• Dentro del ámbito de un trigger existen dos variables que no es necesario
  declararlas y ambas son de tipo %ROWTYPE
• Dichas variables contienen una copia del registro antes (OLD) y después
  (NEW) de la acción de la sentencia DML asociada (ver ejemplo del trigger
  anterior)
• Para modificar el nombre de dichas variables se utiliza la clausula
  «REFERENCING» del trigger
• Estas variables son sólo válidas cuando el trigger es a nivel de fila
Variables OLD y NEW

Sentencia     OLD          NEW


Insert      Null         Valores a
                         insertar

Delete      Valores      Null
            originales

Update      Valores      Valores
            Originales   modificad
                         os
Predicados
• Dentro de un trigger se pueden utilizar predicados, que
  retornan valores booleanos, para identificar la acción que esta
  realizando
• Inserting: Devuelve verdadero si la instrucción que disparó el
  trigger fue un «Insert»
• Updating: Devuelve verdadero si la instrucción que disparó el
  trigger fue un «Update»
• Deleting: Devuelve verdadero si la instrucción que disparó el
  trigger fue un «Delete»
Ejemplo de predicados
Eliminación y Desactivación
• Para eliminar un trigger se utiliza:
  • Drop trigger «nombre_trigger»;
• Para desactivar un trigger se utiliza
  • Alter trigger «nombre_trigger» disable;
• Para activar un trigger se utiliza
  • Alter trigger «nombre_trigger» enable;
• Para activar todos los trigger de una tabla se utiliza
  • Alter table «nombre_tabla» enable all triggers;
Tablas Mutantes
• Uno de los errores mas comunes que se producen en la ejecución de un trigger es
  el de tabla mutante
• Una tabla mutante es aquella que está siendo modificada por una sentencia SQL
  (insert, delete, update)
• Lo anterior implica que dicha tabla no puede ser consultada
• La solución general mas recurrente (no siempre se puede aplicar) es realizar una
  copia de los registros que se modificarán por el trigger en una tabla temporal y
  luego sobre esta tabla temporal realizar las acciones requeridas

Más contenido relacionado

PPTX
Trigger Data Base
PPT
PDF
Triggers en BD mysql
PPTX
Disparadores Trigger En Sql Y My Sql
PPTX
Manejo de triggers en sql server
PDF
database trig
Trigger Data Base
Triggers en BD mysql
Disparadores Trigger En Sql Y My Sql
Manejo de triggers en sql server
database trig

La actualidad más candente (20)

PPT
TRIGGERS
PDF
Tutorial disparadores
PPTX
Trigger-activadores en sql server
PPT
Disparadores - base de datos
DOCX
Postgres trigger
PPTX
Trigger activadores
PPT
Disparadores 1213820550525607-9
DOCX
TRIGGERS Cliente - servidor
PPTX
Disparadores
PPT
Disparadores
PDF
Commit&rollback
DOCX
Sesión12 - Trigger (Oracle)
PDF
Triggers o disparadores en MySQL
PDF
51191625 triggers
DOCX
Triggers disparador
PPTX
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
PDF
Curso de SQL Server: implementacion (T-SQL)
PPTX
PDF
Programación MySQL-Ejercicios
TRIGGERS
Tutorial disparadores
Trigger-activadores en sql server
Disparadores - base de datos
Postgres trigger
Trigger activadores
Disparadores 1213820550525607-9
TRIGGERS Cliente - servidor
Disparadores
Disparadores
Commit&rollback
Sesión12 - Trigger (Oracle)
Triggers o disparadores en MySQL
51191625 triggers
Triggers disparador
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
Curso de SQL Server: implementacion (T-SQL)
Programación MySQL-Ejercicios
Publicidad

Destacado (20)

DOCX
Un nuevo amanecer para el mundo y el peru
PPTX
nstalacion de software
PDF
Resumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCION
PPTX
Clase 16
PPTX
Clase 20
PPTX
Clase6
PDF
Estadisticas puente alto violencia
PDF
GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’
PPTX
Da silva correa_contreras_presentaciónfinal
PDF
PPTX
Injusticia de la justicia
PDF
Abf lec dictionary
PDF
2.8.2
PDF
Gabriel García Márquez se ha retirado de la vida pública
PPTX
Caja negra.. tony
PDF
2016 1 28 material de seminario
PDF
11.6.2
PPT
Ccna exploration routing_protocols_and_concepts_-_chapter_10_overview_es
PPTX
NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...
Un nuevo amanecer para el mundo y el peru
nstalacion de software
Resumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCION
Clase 16
Clase 20
Clase6
Estadisticas puente alto violencia
GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’
Da silva correa_contreras_presentaciónfinal
Injusticia de la justicia
Abf lec dictionary
2.8.2
Gabriel García Márquez se ha retirado de la vida pública
Caja negra.. tony
2016 1 28 material de seminario
11.6.2
Ccna exploration routing_protocols_and_concepts_-_chapter_10_overview_es
NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...
Publicidad

Similar a Semana 12 y 13 subprogramas triggers (20)

PPTX
Trigger - INSERT- Base de Datos 2 .pptx
PDF
BDDII T1-2_TalentoDeBasededatosparaminovia
PPTX
TRIGGERS DE BASE DE DATOS EN MYSQL WORCKBENCH.pptx
PPTX
TRIGGERS O DISPARADORES
PPTX
CREACION DE TRIGGERS.pptx
PPTX
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
PPTX
Triggers
PPTX
Trigger - Activadores
PPTX
DOCX
Trabajo grupal - Base de Datos
PPTX
Sql triggers v3
PPTX
Triggers o disparadores
PPTX
PPTX
Triggers-Activadores
PPTX
Trigger activadores
DOC
PPTX
Disparadores Trigger En Sql Y My Sql
DOCX
Triggers en SQL
PPTX
TRIGGER-ACTIVADORES
PPTX
TRIGGERS-ACTIVADORES
Trigger - INSERT- Base de Datos 2 .pptx
BDDII T1-2_TalentoDeBasededatosparaminovia
TRIGGERS DE BASE DE DATOS EN MYSQL WORCKBENCH.pptx
TRIGGERS O DISPARADORES
CREACION DE TRIGGERS.pptx
SQL SERVER Y MYSQL - ADMINISTRACIÓN DE BASE DE DATOS
Triggers
Trigger - Activadores
Trabajo grupal - Base de Datos
Sql triggers v3
Triggers o disparadores
Triggers-Activadores
Trigger activadores
Disparadores Trigger En Sql Y My Sql
Triggers en SQL
TRIGGER-ACTIVADORES
TRIGGERS-ACTIVADORES

Más de victdiazm (20)

PDF
Semana 2 y_3_-_file_ownerships_and_permissions
PDF
Semana 9 standard io and pipes guia de ejercicios resuelta
PDF
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
PDF
Semana 4 y 5 la shell bash guia de ejercicios resuelta
PDF
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
PDF
Semana 1 quick tours guia de ejercicios resuelta
PDF
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
PDF
Semana 4 y_5_-_la_shell_bash
PDF
Semana 2 y_3_-_file_ownerships_and_permissions
PDF
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
PDF
Semana 1 -_quick_tours
PPT
Semana 16 usuarios y grupos
PPT
Semana 13 y 14 aplicaciones de redes
PPT
Semana 12 filesystem basico
PPT
Semana 10 administracion de procesos
PPT
Semana 9 entradas salidas estandar y pipes
PPT
Semana 8 herramientas de procesos de string
PPT
Semana 7 y 8 sistemas de archivos linux
DOCX
Script
DOCX
Control1 victoria diaz
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
Semana 1 quick tours guia de ejercicios resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 4 y_5_-_la_shell_bash
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours
Semana 16 usuarios y grupos
Semana 13 y 14 aplicaciones de redes
Semana 12 filesystem basico
Semana 10 administracion de procesos
Semana 9 entradas salidas estandar y pipes
Semana 8 herramientas de procesos de string
Semana 7 y 8 sistemas de archivos linux
Script
Control1 victoria diaz

Semana 12 y 13 subprogramas triggers

  • 2. Aprendizajes esperados • Construye procedimientos almacenados, triggers de base de datos, cursores y funciones que ayuden o implementen directamente soluciones a la lógica de negocio recogida en la captura de requerimientos de un sistema • Discernir cuando usar un procedimientos almacenados, trigger de base de datos, cursor y función para implementar una solución a la lógica de negocio recogida en la captura de requerimientos de un sistema
  • 3. Conceptos Claves • Los triggers (disparadores) son bloques asociados a una tabla y que se ejecutan automáticamente cuando ocurre una operación DML (Insert, Delete, Update) sobre esa tabla • No es recomendable crear triggers muy complejos o una cantidad numerosa para una tabla, ya que la performance puede verse afectada • Un trigger no puede llevar el comando Commit o Rollback (ni los bloques que dicho trigger invoque) • Los triggers sobre tablas no son los únicos existentes. También existen sobre vistas, o sobre base de datos o esquema
  • 4. Sintáxis CREATE [OR REPLACE] TRIGGER «nombre_trigger»{BEFORE|AFTER} {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN] [OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]} ON «nombre_tabla» [REFERENCING OLD as «nombre_anterior», NEW as «nombre_nuevo»] [FOR EACH ROW [WHEN («condicion»)]] DECLARE …….BEGIN ...... [EXCEPTION] …. END «nombre_trigger»;
  • 5. Sintaxis • Donde: • {BEFORE|AFTER} : Indica si el trigger se ejecuta antes o después de la sentencia que disparó al trigger • {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN] [OR {DELETE|INSERT|UPDATE [OF col1, col2, ..., colN]...]}: Indica cual (o cuales) evento está asociado al trigger. Opcionalmente, para el caso de actualización se puede especificar las columnas cuya modificación dispara al trigger • [REFERENCING OLD as «nombre_anterior», NEW as «nombre_nuevo»]: Opcional. Asigna nombre a la forma como se referenciará a los registros antes o despues de la ejecución del (los) evento asociado • [FOR EACH ROW [WHEN («condicion»)]]: Indica si el trigger se ejecuta a nivel de fila, es decir, por cada registro afectado por el trigger. Opcionalmente se puede agregar una condición para filtrar los registros afectados
  • 6. Ejemplo de trigger Trigger Declarado
  • 7. Ejemplo de trigger • Para que se ejecute el trigger, debemos invocar la sentencia DML asociada (insert). Consideremos que dicho trigger asigna un identificador cada vez se ingresa un nuevo registro a la tabla auto • Fijarse que en el insert no se asignó valor al campo «auto_id». Sin embargo, en la tabla aparece un valor. Eso implica que nuestro trigger ha
  • 8. Variables OLD y NEW • Dentro del ámbito de un trigger existen dos variables que no es necesario declararlas y ambas son de tipo %ROWTYPE • Dichas variables contienen una copia del registro antes (OLD) y después (NEW) de la acción de la sentencia DML asociada (ver ejemplo del trigger anterior) • Para modificar el nombre de dichas variables se utiliza la clausula «REFERENCING» del trigger • Estas variables son sólo válidas cuando el trigger es a nivel de fila
  • 9. Variables OLD y NEW Sentencia OLD NEW Insert Null Valores a insertar Delete Valores Null originales Update Valores Valores Originales modificad os
  • 10. Predicados • Dentro de un trigger se pueden utilizar predicados, que retornan valores booleanos, para identificar la acción que esta realizando • Inserting: Devuelve verdadero si la instrucción que disparó el trigger fue un «Insert» • Updating: Devuelve verdadero si la instrucción que disparó el trigger fue un «Update» • Deleting: Devuelve verdadero si la instrucción que disparó el trigger fue un «Delete»
  • 12. Eliminación y Desactivación • Para eliminar un trigger se utiliza: • Drop trigger «nombre_trigger»; • Para desactivar un trigger se utiliza • Alter trigger «nombre_trigger» disable; • Para activar un trigger se utiliza • Alter trigger «nombre_trigger» enable; • Para activar todos los trigger de una tabla se utiliza • Alter table «nombre_tabla» enable all triggers;
  • 13. Tablas Mutantes • Uno de los errores mas comunes que se producen en la ejecución de un trigger es el de tabla mutante • Una tabla mutante es aquella que está siendo modificada por una sentencia SQL (insert, delete, update) • Lo anterior implica que dicha tabla no puede ser consultada • La solución general mas recurrente (no siempre se puede aplicar) es realizar una copia de los registros que se modificarán por el trigger en una tabla temporal y luego sobre esta tabla temporal realizar las acciones requeridas