PL/SQL Triggers 1 miércoles 23 de mayo de 2012 Introducción. - Procedimientos que se almacenan de manera aislada en la BD y deben ser invocados explícitamente. - Se ejecutan automáticamente al producirse determinados eventos. 2 miércoles 23 de mayo de 2012 Triggers. - Disparador de tabla. - Disparador de sustitución. - Disparador de sistema. 3 miércoles 23 de mayo de 2012 Triggers. - Se utilizan para: - Mantener la integridad referencial. - Manipulación sobre vistas. - Generar automáticamente valores derivados. - Gestionar réplicas remotas. - Asegurar las reglas del negocio. - Auditar. 4 miércoles 23 de mayo de 2012 Triggers. - Para definir un trigger se debe: - Especificar las condiciones. - Especificar las acciones. 5 miércoles 23 de mayo de 2012 Triggers. - Las acciones se definen mediante bloques PL-SQL: - Declarativa - Ejecutable. - Excepciones. 6 miércoles 23 de mayo de 2012 Triggers - Se almacenan en la BD (user_triggers): - Pueden afectar a N filas. - Se ejecutan de manera implicita. - Se compilan cada vez que se activan. 7 miércoles 23 de mayo de 2012 Sintaxis y !"#$%&'()*#)+(),"&--#" y !"#$%&'()%#*+,-.%#/(&(#"(#.&0(.-12#30#42#!"#$$%" 0, -./0!/(1.(./230-/(!.455/.(!"#$%&'(%)**&% 67/81./(9(08!/.(9(4:;!/0<(18=(&+&!("',&',)-./%" >?@/:(0"!,)0)1!',&',)./%"A ></-30./ B'%CD*"*C#,E%&FA 7/54: B*CC#,E%&F >/G-/2!41: B$%&+#HE('%(%IC%JC#,E%&FA /:<K 8 miércoles 23 de mayo de 2012 Creación. - En la cabecera del trigger se define: - Nombre del trigger. - Evento del disparo: - DML. - DDL. - Suceso del sistema. - Restricción del trigger (opcional). 9 miércoles 23 de mayo de 2012 Sintaxis - Eliminación - drop trigger nombre_disparador; - Activación/Desactivación - alter trigger nombre_disparador {disable|enable}; 10 miércoles 23 de mayo de 2012 Componentes - Before/after/Instead of: - instante de ejecución del disparador respecto al evento. - Evento: - Orden DML sobre una tabla. 11 miércoles 23 de mayo de 2012 Componentes - PL/SQL: - un disparador no puede emitir ninguna orden de control de transacciones. - No puede contener ninguna declaración de variables LONG o LONG RAW. - No puede modificar columnas que son primary key 12 miércoles 23 de mayo de 2012 Registros :old y :new Registros :old y :new Un disparador a nivel de fila se ejecuta por cada fila en la que se yproduce el suceso. - :old :new son registros que nos permiten :old yacceder :new sona registros nos los datosque de la filapermiten actual. acceder a lo datos de la fila actual. Carmen Hernández miércoles 23 de mayo de 2012 Suceso :old :new INSERT NULL Nuevos valores UPDATE Valores almacenados Nuevos valores DELETE Valores almacenados NULL 13 Triggers y PL/SQL !"#$$%"& '%()*&%('%('*+,& /*Cada ves que se modifica el campo salario en la tabla empleados se insertara un afila en la tabla auditaremple*/ y !"#$%&%'(&)#*')*+%,-%# -./0!/(1.(./230-/(!.455/.(*6'#+7&6)#'*7&*8*"#, 09!/.(:2;0!/(19(&*8*"#, 1<(%=>8% 91.(/0-?(.1@ A/54< 4<B/.!(4<!1(*6'#+*"%=>8% s>h^;͚^h/^>Z/KDW>K͛ͮͮ͗,8'C%=>7D,EF /<;F G 14 miércoles 23 de mayo de 2012 y !"#$%&%'(&)#*')*+%,-%# y !"#$%&'()%#*(&(#+&,(&#-./*(&(-%&,/#-,#)(0"(/#,/1 -./0!/(12.(./340-/5(!.677/.(!"#$%&'%())&% 89/:2./(;(0:!/.<(8=/4/!/;6>?/.!;@3=0!/(12:(AB#&+*CD*EF,&G5<( 2>(H,E)"%+*)B* 1:2.(/0-I(8?!0!/J/>!;.2K;(1KI/>LD,H'#D#MHN5<5 9/76> ͙͘͘ 15 miércoles 23 de mayo de 2012 y !"#$%&%'(&)#*')*+%,-%# y !"#$%&'%()*(#!"#$$%" $(#+%$,-.-#/'-)+0#$(#10..-#')# (2,"(-+0#3#&'-.+-#$'#)45#-,(""%+0#3#+,*0 ()#*-'#+*"%./0% 1234!3(52(2367413(!289932(*-'#+:),""*',:%./0% ;3<523(=373!3 5>(%./0% <52(341?(25@ ;398> 8>A32!(8>!5(*-'#+*"%./0% s>h^;͚KZZKDW>K͛ͮͮ͗,0'B%./:C,DD E,0'B*/%00#', DD(E,0'B'%/+:C,FG 3>=G 16 miércoles 23 de mayo de 2012 4)+($(#4*5#(50+)%*)%$($6 y 7%#./%&%8)(-*&#%54"/%)#/5(#)+&0)%44%95#'()(#./+#&9"* +,+4/0+#+"#$%&'()($*)#4/(5$*#+"#+-'"+($*#1*))($* -./012/3!/("*#%5$%4():(-*&#-+$%(50+#"(#4";/&/"(#4 7./8!/(9.(./-:87/(!.1;;/.(*<'#+=),""*',=%>?@% A/B9./(2/:/!/ 93(%>?@% B9.(/875(.94(!"#$%&'()&*+,+&с͚WZ^/Ed͛ A/;13 ͙ 17 miércoles 23 de mayo de 2012 y !"#$%&%'(&)#*')*+%,-%# y .%-(&)#*!"# /*$%& -./0!/(!.122/.(),""*',3%456% 07!/.(8/9/!/(:;(%456% '"("'"!)*!+,$%&,-.,/0123453 7:.(/0-<(.:= =</;(>?,@'#?#A@B C/21; 1;D/.!(1;!:(<#&+,"#?,3%456% E09F/D(G H*@+%"#,"I%453@,J(H*@+%"#,"I*5%66#',J(H*@+%"#,"I,K#?#,LM /;8M 18 miércoles 23 de mayo de 2012 y ./-+"$-)#*)0)1+(#*')*'"#$%&( y !"#$%&'( ZddZ/''Z͙ -./01.(!"#$%&'(%')*+,&$'(%'+$-$&$'02(%345%͙ -.672 7/(!"#$%&!". d,E͙ .897/(+$-$&!". d,E͙ .897/()*+,&!". d,E͙ E/&͙ .2:; 19 miércoles 23 de mayo de 2012