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

La actualidad más candente

TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
demoiselle
 
Tutorial disparadores
Tutorial disparadoresTutorial disparadores
Tutorial disparadores
Marck Prz
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Trigger-activadores en sql server
Trigger-activadores en sql serverTrigger-activadores en sql server
Trigger-activadores en sql server
Vicente Alberca
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
Adriana Becerra
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
Andres Ortega
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
Delsi Yakelin Huaman Villanueva
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
Angelica Garcia Garcia
 
TRIGGERS Cliente - servidor
TRIGGERS Cliente - servidorTRIGGERS Cliente - servidor
TRIGGERS Cliente - servidor
JOSE ARMANDO M.C.
 
Disparadores
DisparadoresDisparadores
Disparadores
Ziscko
 
Disparadores
DisparadoresDisparadores
Disparadores
Adriana Becerra
 
Commit&rollback
Commit&rollbackCommit&rollback
Commit&rollback
ArchCHUZ
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
José Toro
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL
Jair Ospino Ardila
 
51191625 triggers
51191625 triggers51191625 triggers
51191625 triggers
Manuel Gutierrez Cruz
 
Triggers disparador
Triggers disparadorTriggers disparador
Triggers disparador
dioselina123
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
Kamisutra
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)
Salvador Ramos
 
Expo base
Expo baseExpo base
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
testgrupocomex
 

La actualidad más candente (20)

TRIGGERS
TRIGGERSTRIGGERS
TRIGGERS
 
Tutorial disparadores
Tutorial disparadoresTutorial disparadores
Tutorial disparadores
 
Ejemplo de Trigger en Mysql
Ejemplo de Trigger en MysqlEjemplo de Trigger en Mysql
Ejemplo de Trigger en Mysql
 
Trigger-activadores en sql server
Trigger-activadores en sql serverTrigger-activadores en sql server
Trigger-activadores en sql server
 
Disparadores - base de datos
Disparadores - base de datosDisparadores - base de datos
Disparadores - base de datos
 
Postgres trigger
Postgres triggerPostgres trigger
Postgres trigger
 
Trigger activadores
Trigger activadoresTrigger activadores
Trigger activadores
 
Disparadores 1213820550525607-9
Disparadores 1213820550525607-9Disparadores 1213820550525607-9
Disparadores 1213820550525607-9
 
TRIGGERS Cliente - servidor
TRIGGERS Cliente - servidorTRIGGERS Cliente - servidor
TRIGGERS Cliente - servidor
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Disparadores
DisparadoresDisparadores
Disparadores
 
Commit&rollback
Commit&rollbackCommit&rollback
Commit&rollback
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
Triggers o disparadores en MySQL
Triggers o disparadores en MySQL Triggers o disparadores en MySQL
Triggers o disparadores en MySQL
 
51191625 triggers
51191625 triggers51191625 triggers
51191625 triggers
 
Triggers disparador
Triggers disparadorTriggers disparador
Triggers disparador
 
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM   TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
TRANSACCIONES, TRIGGERS, PROCEDIMIENTOS ALMACENADOS: DB2/IBM
 
Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)Curso de SQL Server: implementacion (T-SQL)
Curso de SQL Server: implementacion (T-SQL)
 
Expo base
Expo baseExpo base
Expo base
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 

Destacado

Un nuevo amanecer para el mundo y el peru
Un nuevo amanecer para el mundo y el peruUn nuevo amanecer para el mundo y el peru
Un nuevo amanecer para el mundo y el peru
Colectivo Toleranciaydemocracia
 
nstalacion de software
nstalacion de softwarenstalacion de software
nstalacion de software
Jose Andres hernandez florez
 
Resumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCION
Resumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCIONResumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCION
Resumen delo que se ha instruido a la hermandad SOBRE LA CLAUSULA DE EXCEPCION
Eliud Gamez Gomez
 
Clase 16
Clase 16Clase 16
Clase 16
victdiazm
 
Clase 20
Clase 20Clase 20
Clase 20
victdiazm
 
Clase6
Clase6Clase6
Clase6
victdiazm
 
Estadisticas puente alto violencia
Estadisticas puente alto violenciaEstadisticas puente alto violencia
Estadisticas puente alto violencia
dcmartin1893
 
GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’
GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’
GRAVES DAÑOS ECONOMICOS EN LA EJECUCIÓN DEL ‘’PROYECTO OLMOS’’
Colectivo Toleranciaydemocracia
 
Da silva correa_contreras_presentaciónfinal
Da silva correa_contreras_presentaciónfinalDa silva correa_contreras_presentaciónfinal
Da silva correa_contreras_presentaciónfinal
danicorrear
 
752
752752
Injusticia de la justicia
Injusticia de la justiciaInjusticia de la justicia
Injusticia de la justicia
Anallely Reyes Amador
 
Abf lec dictionary
Abf lec dictionaryAbf lec dictionary
Abf lec dictionary
victdiazm
 
2.8.2
2.8.22.8.2
2.8.2
victdiazm
 
Gabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida públicaGabriel García Márquez se ha retirado de la vida pública
Gabriel García Márquez se ha retirado de la vida pública
Colectivo Toleranciaydemocracia
 
Rusia12
Rusia12Rusia12
Caja negra.. tony
Caja negra.. tonyCaja negra.. tony
Caja negra.. tony
erikalalopez
 
2016 1 28 material de seminario
2016 1 28 material de seminario2016 1 28 material de seminario
2016 1 28 material de seminario
Colectivo Toleranciaydemocracia
 
11.6.2
11.6.211.6.2
11.6.2
victdiazm
 
Ccna exploration routing_protocols_and_concepts_-_chapter_10_overview_es
Ccna exploration routing_protocols_and_concepts_-_chapter_10_overview_esCcna exploration routing_protocols_and_concepts_-_chapter_10_overview_es
Ccna exploration routing_protocols_and_concepts_-_chapter_10_overview_es
victdiazm
 
NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...
NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...
NOVEDADES CONTENIDAS EN LA LEY 22/2013, DE 23 DE DICIEMBRE, DE PRESUPUESTOS G...
Juan Carlos M
 

Destacado (20)

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

Similar a Semana 12 y 13 subprogramas triggers

CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptx
MrKevinKR
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
Lisbeth Ocaña Bueno
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
demoiselle
 
Dbd triggers
Dbd triggersDbd triggers
Dbd triggers
edwquiv
 
Sql triggers v3
Sql triggers v3Sql triggers v3
Sql triggers v3
Nicolas Villarreal
 
Triggers-Activadores
Triggers-ActivadoresTriggers-Activadores
Triggers-Activadores
ROMARIO MONTALVAN CASTILLO
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
Pablo Jose
 
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
 
San triggers
San triggersSan triggers
TRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORESTRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORES
INGRID LESLY CORONEL ACUÑA
 
TRIGGER-ACTIVADORES
TRIGGER-ACTIVADORESTRIGGER-ACTIVADORES
TRIGGER-ACTIVADORES
INGRID LESLY CORONEL ACUÑA
 
Formacion critica
Formacion criticaFormacion critica
Formacion critica
Hussira Boset
 
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
 
Trigger - Activadores
Trigger - ActivadoresTrigger - Activadores
Trigger - Activadores
Magaly Portocarrero Labajos
 
Triggr
TriggrTriggr
Disparadores.pptx
Disparadores.pptxDisparadores.pptx
Disparadores.pptx
Enrique Lobato Pérez
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
Luis Jherry
 
Aniuska programación
Aniuska programaciónAniuska programación
Aniuska programación
JhoanderFerrer1
 

Similar a Semana 12 y 13 subprogramas triggers (18)

CREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptxCREACION DE TRIGGERS.pptx
CREACION DE TRIGGERS.pptx
 
TRIGGERS O DISPARADORES
TRIGGERS O DISPARADORESTRIGGERS O DISPARADORES
TRIGGERS O DISPARADORES
 
Bd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa TriggersBd L8 Eq9 Pre Rosa Triggers
Bd L8 Eq9 Pre Rosa Triggers
 
Dbd triggers
Dbd triggersDbd triggers
Dbd triggers
 
Sql triggers v3
Sql triggers v3Sql triggers v3
Sql triggers v3
 
Triggers-Activadores
Triggers-ActivadoresTriggers-Activadores
Triggers-Activadores
 
Triggers o disparadores
Triggers o disparadoresTriggers o disparadores
Triggers o disparadores
 
Transacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQLTransacciones y sql procedural EN MySQL
Transacciones y sql procedural EN MySQL
 
San triggers
San triggersSan triggers
San triggers
 
TRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORESTRIGGERS-ACTIVADORES
TRIGGERS-ACTIVADORES
 
TRIGGER-ACTIVADORES
TRIGGER-ACTIVADORESTRIGGER-ACTIVADORES
TRIGGER-ACTIVADORES
 
Formacion critica
Formacion criticaFormacion critica
Formacion critica
 
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
 
Trigger - Activadores
Trigger - ActivadoresTrigger - Activadores
Trigger - Activadores
 
Triggr
TriggrTriggr
Triggr
 
Disparadores.pptx
Disparadores.pptxDisparadores.pptx
Disparadores.pptx
 
Funciones store proc_triggers
Funciones store proc_triggersFunciones store proc_triggers
Funciones store proc_triggers
 
Aniuska programación
Aniuska programaciónAniuska programación
Aniuska programación
 

Más de victdiazm

Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
victdiazm
 
Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resuelta
victdiazm
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem guia de ejercicios resuelta
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
victdiazm
 
Semana 4 y 5 la shell bash guia de ejercicios resuelta
Semana 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash guia de ejercicios resuelta
Semana 4 y 5 la shell bash guia de ejercicios resuelta
victdiazm
 
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3   file ownerships and permissions guia de ejercicios resueltaSemana 2 y 3   file ownerships and permissions guia de ejercicios resuelta
Semana 2 y 3 file ownerships and permissions guia de ejercicios resuelta
victdiazm
 
Semana 1 quick tours guia de ejercicios resuelta
Semana 1   quick tours guia de ejercicios resueltaSemana 1   quick tours guia de ejercicios resuelta
Semana 1 quick tours guia de ejercicios resuelta
victdiazm
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
victdiazm
 
Semana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bashSemana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bash
victdiazm
 
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
victdiazm
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
victdiazm
 
Semana 1 -_quick_tours
Semana 1 -_quick_toursSemana 1 -_quick_tours
Semana 1 -_quick_tours
victdiazm
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y grupos
victdiazm
 
Semana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redesSemana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redes
victdiazm
 
Semana 12 filesystem basico
Semana 12  filesystem basicoSemana 12  filesystem basico
Semana 12 filesystem basico
victdiazm
 
Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesos
victdiazm
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
victdiazm
 
Semana 8 herramientas de procesos de string
Semana 8  herramientas de procesos de stringSemana 8  herramientas de procesos de string
Semana 8 herramientas de procesos de string
victdiazm
 
Semana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linuxSemana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linux
victdiazm
 
Script
ScriptScript
Script
victdiazm
 
Control1 victoria diaz
Control1   victoria diazControl1   victoria diaz
Control1 victoria diaz
victdiazm
 

Más de victdiazm (20)

Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
 
Semana 9 standard io and pipes guia de ejercicios resuelta
Semana 9   standard io and pipes  guia de ejercicios resueltaSemana 9   standard io and pipes  guia de ejercicios resuelta
Semana 9 standard io and pipes guia de ejercicios resuelta
 
Semana 7 y 8 the linux filesystem guia de ejercicios resuelta
Semana 7 y 8   the linux filesystem guia de ejercicios resueltaSemana 7 y 8   the linux filesystem 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 4 y 5  la shell bash guia de ejercicios resueltaSemana 4 y 5  la shell bash 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 2 y 3   file ownerships and permissions guia de ejercicios resueltaSemana 2 y 3   file ownerships and permissions 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 1   quick tours guia de ejercicios resueltaSemana 1   quick tours guia de ejercicios resuelta
Semana 1 quick tours guia de ejercicios resuelta
 
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resueltaSemana 10 -_managing_processes_guia_de_ejercicios_resuelta
Semana 10 -_managing_processes_guia_de_ejercicios_resuelta
 
Semana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bashSemana 4 y_5_-_la_shell_bash
Semana 4 y_5_-_la_shell_bash
 
Semana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissionsSemana 2 y_3_-_file_ownerships_and_permissions
Semana 2 y_3_-_file_ownerships_and_permissions
 
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resueltaSemana 1 -_quick_tours_guia_de_ejercicios_resuelta
Semana 1 -_quick_tours_guia_de_ejercicios_resuelta
 
Semana 1 -_quick_tours
Semana 1 -_quick_toursSemana 1 -_quick_tours
Semana 1 -_quick_tours
 
Semana 16 usuarios y grupos
Semana 16 usuarios y gruposSemana 16 usuarios y grupos
Semana 16 usuarios y grupos
 
Semana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redesSemana 13 y 14 aplicaciones de redes
Semana 13 y 14 aplicaciones de redes
 
Semana 12 filesystem basico
Semana 12  filesystem basicoSemana 12  filesystem basico
Semana 12 filesystem basico
 
Semana 10 administracion de procesos
Semana 10 administracion de procesosSemana 10 administracion de procesos
Semana 10 administracion de procesos
 
Semana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipesSemana 9 entradas salidas estandar y pipes
Semana 9 entradas salidas estandar y pipes
 
Semana 8 herramientas de procesos de string
Semana 8  herramientas de procesos de stringSemana 8  herramientas de procesos de string
Semana 8 herramientas de procesos de string
 
Semana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linuxSemana 7 y 8 sistemas de archivos linux
Semana 7 y 8 sistemas de archivos linux
 
Script
ScriptScript
Script
 
Control1 victoria diaz
Control1   victoria diazControl1   victoria diaz
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