TRIGGER -
ACTIVADORES
 1. Contenido
Definición
Un activador define un conjunto de acciones que se ejecutan en respuesta a una
operación de inserción, actualización o supresión en una tabla determinada.
se ejecuta una de estas operaciones de SQL, se dice que el activador se
Los activadores son opcionales y se definen mediante la sentencia CREATE
Sintaxis
Creamos un procedimiento almacenado, utilizando la siguiente sentencia:
CREATE TRIGGER <Trigger_Name, sysname, Trigger_Name>
ON <Table_Name, sysname, Table_Name>
AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
END
Administración de Activadores(Creación,
Modificación y Eliminación)
Creando un Activador
CREATE OR REPLACE TRIGGER TR_PRODUCTOS
AFTER INSERT ON PRODUCTOS
FOR EACH ROW
DECLARE
-- local variables
BEGIN
INSERT INTO PRODUCTOS
(CODPRODUCTO,DESCRIPCION,PRECIO,ACTUALIZACION)
VALUES
(‘P001’,’GALLETA CASINO’,0.7,SYSDATE);
END ;
Administración de Activadores(Creación,
Modificación y Eliminación)
Actualizando un Activador
ALTER OR REPLACE TRIGGER TR_PRODUCTOS
AFTER INSERT ON PRODUCTOS
FOR EACH ROW
DECLARE
-- local variables
BEGIN
INSERT INTO PRODUCTOS
(CODPRODUCTO,DESCRIPCION,PRECIO,ACTUALIZACION)
VALUES
(‘P001’,’GALLETA CASINO’,0.7,SYSDATE);
END ;
Administración de Activadores(Creación,
Modificación y Eliminación)
Eliminando un trigger
DROP TRIGGER TR_PRODUCTOS
Ejemplos
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'Sales.bonus_reminder',
N'TR') IS NOT NULL
DROP TRIGGER Sales.bonus_reminder;
GO
CREATE TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation',
16, 10);
GO
-- Now, change the trigger.
ALTER TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
AFTER INSERT
AS RAISERROR ('Notify Compensation', 16,
10);
GO
Resumen
 La activación de un activador puede provocar una cascada de activadores ,
que es el resultado de la activación de un activador que ejecuta sentencias
de SQL que provocan la activación de otros activadores o incluso del
mismo activador otra vez. Las acciones activadas también pueden causar
actualizaciones como resultado de la aplicación de las reglas de integridad
de referencia para las supresiones que, a su vez, pueden provocar la
activación de activadores adicionales. Con una cascada de activadores, se
puede activar una cadena de activadores y reglas de supresión de
integridad de referencia, lo que puede producir un cambio significativo en
la base de datos como resultado de una sola sentencia INSERT, UPDATE o
DELETE.
Recomendaciones
 Los triggers deben programarse para que funcionen independientemente de si
el número de registros afectados es uno, muchos o ninguno (¡Ojo! También se
desencadenan los triggers si no hay registros afectados, y esto hay que tenerlo
muy en cuenta).
 No utilizar las siguientes instrucciones en un Trigger que son: Alter Database,
Create Database, Disk Init, Disk Resize, Drop Database, Load Database, Load
Log Reconfigure, Restore Database, Restore Log.
Conclusiones
 La hora de activación del activador específica si el activador debería
activarse antes o después de que se produzca el suceso activador.
 Se pueden especificar varios activadores para una combinación de tabla,
suceso o momento de activación.
 Con una cascada de activadores, se puede activar una cadena de
activadores y reglas de supresión de integridad de referencia, lo que puede
producir un cambio significativo en la base de datos como resultado de
una sola sentencia INSERT, UPDATE o DELETE.
Apreciación del Equipo
 Los activadores son un mecanismo útil para definir e imponer reglas
empresariales transicionales, que son reglas que incluyen diferentes
estados de los datos (por ejemplo, un salario que no se puede
aumentar más del 10 por ciento).
Trigger activadores

Trigger activadores

  • 1.
  • 2.
     1. Contenido Definición Unactivador define un conjunto de acciones que se ejecutan en respuesta a una operación de inserción, actualización o supresión en una tabla determinada. se ejecuta una de estas operaciones de SQL, se dice que el activador se Los activadores son opcionales y se definen mediante la sentencia CREATE
  • 3.
    Sintaxis Creamos un procedimientoalmacenado, utilizando la siguiente sentencia: CREATE TRIGGER <Trigger_Name, sysname, Trigger_Name> ON <Table_Name, sysname, Table_Name> AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE> AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for trigger here END
  • 4.
    Administración de Activadores(Creación, Modificacióny Eliminación) Creando un Activador CREATE OR REPLACE TRIGGER TR_PRODUCTOS AFTER INSERT ON PRODUCTOS FOR EACH ROW DECLARE -- local variables BEGIN INSERT INTO PRODUCTOS (CODPRODUCTO,DESCRIPCION,PRECIO,ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7,SYSDATE); END ;
  • 5.
    Administración de Activadores(Creación, Modificacióny Eliminación) Actualizando un Activador ALTER OR REPLACE TRIGGER TR_PRODUCTOS AFTER INSERT ON PRODUCTOS FOR EACH ROW DECLARE -- local variables BEGIN INSERT INTO PRODUCTOS (CODPRODUCTO,DESCRIPCION,PRECIO,ACTUALIZACION) VALUES (‘P001’,’GALLETA CASINO’,0.7,SYSDATE); END ;
  • 6.
    Administración de Activadores(Creación, Modificacióny Eliminación) Eliminando un trigger DROP TRIGGER TR_PRODUCTOS
  • 7.
    Ejemplos USE AdventureWorks2012; GO IF OBJECT_ID(N'Sales.bonus_reminder', N'TR')IS NOT NULL DROP TRIGGER Sales.bonus_reminder; GO CREATE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory WITH ENCRYPTION AFTER INSERT, UPDATE AS RAISERROR ('Notify Compensation', 16, 10); GO -- Now, change the trigger. ALTER TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory AFTER INSERT AS RAISERROR ('Notify Compensation', 16, 10); GO
  • 8.
    Resumen  La activaciónde un activador puede provocar una cascada de activadores , que es el resultado de la activación de un activador que ejecuta sentencias de SQL que provocan la activación de otros activadores o incluso del mismo activador otra vez. Las acciones activadas también pueden causar actualizaciones como resultado de la aplicación de las reglas de integridad de referencia para las supresiones que, a su vez, pueden provocar la activación de activadores adicionales. Con una cascada de activadores, se puede activar una cadena de activadores y reglas de supresión de integridad de referencia, lo que puede producir un cambio significativo en la base de datos como resultado de una sola sentencia INSERT, UPDATE o DELETE.
  • 9.
    Recomendaciones  Los triggersdeben programarse para que funcionen independientemente de si el número de registros afectados es uno, muchos o ninguno (¡Ojo! También se desencadenan los triggers si no hay registros afectados, y esto hay que tenerlo muy en cuenta).  No utilizar las siguientes instrucciones en un Trigger que son: Alter Database, Create Database, Disk Init, Disk Resize, Drop Database, Load Database, Load Log Reconfigure, Restore Database, Restore Log.
  • 10.
    Conclusiones  La horade activación del activador específica si el activador debería activarse antes o después de que se produzca el suceso activador.  Se pueden especificar varios activadores para una combinación de tabla, suceso o momento de activación.  Con una cascada de activadores, se puede activar una cadena de activadores y reglas de supresión de integridad de referencia, lo que puede producir un cambio significativo en la base de datos como resultado de una sola sentencia INSERT, UPDATE o DELETE.
  • 11.
    Apreciación del Equipo Los activadores son un mecanismo útil para definir e imponer reglas empresariales transicionales, que son reglas que incluyen diferentes estados de los datos (por ejemplo, un salario que no se puede aumentar más del 10 por ciento).