2. 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
3. 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
4. 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 ;
5. 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 ;
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ó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.
9. 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.
10. 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.
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).