Por JC13 , Sábado 09 de agosto de 2008 a las 10:06
hola, no se como quieres que sea el trigger (su función) asi que ahí va un resumen basico.
Componentes de un trigger
Momento: ¿Cuándo se va a disparar?
BEFORE: Antes de la instrucción DML, indicado si el trigger sirve para comprobar si la operación DML debe hacerse o no.
AFTER: Si queremos que la sentencia se ejecute antes que el trigger y además no se prevee que el trigger vaya a hacer fallar la sentencia.
Evento: ¿Qué operación DML provocará la ejecución de un trigger?.
INSERT, UPDATE, DELETE (se pueden combinar mediante OR)
Tipo de Trigger: ¿Cuántas veces se va a disparar cuando se produce el evento?
Por sentencia: Se ejecuta una sola vez, incluso aunque no haya filas afectadas. Se usan si la acción del trigger no depende de los valores de los datos afectados por la operación.
Por fila: Se ejecuta tantas veces como filas se vean afectadas por la operación. Se usan si la acción del trigger depende de los datos afectados.
Cuerpo del trigger: ¿Qué acción va a realizar el trigger? en tu caso la instruccion insert
El cuerpo del trigger es un bloque PL/SQL anonimo:
DECLARE (zona de declaracion de variables)
BEGIN (inicio del bloque)
EXCEPTION (zona de control de errores)
END; (fin del bloque)
Puede contener variables, cursores, excepciones…
Si el trigger es de fila se permite acceder al valor de los datos afectados por la orden DML empleando :old y :new.
Sintaxis para triggers a nivel de sentencia
CREATE OR REPLACE TRIGGER nombre_trigger
BEFORE | AFTER
INSERT OR UPDATE OR DELETE
ON nombre_tabla
Bloque PL/SQL;
Cuando un trigger puede ser disparado por varias operaciones distintas, hay una forma de saber dentro del código del trigger cual de ellas lo disparó, se llaman predicados condicionales y se usan así:
IF INSERTING THEN…
IF UPDATING [(‘nombreColumna’)] THEN…
IF DELETING THEN…
Trigger a nivel de fila
CREATE OR REPLACE TRIGGER nombre_trigger
BEFORE | AFTER
INSERT OR UPDATE OR DELETE
ON nombre_tabla
FOR EACH ROW
[WHEN condicion]
Bloque PL/SQL;
Uso de :old y :new
Solo para triggers por fila. Sirven para referirse al valor anterior y posterior a una modificación.
INSERT: solo existe :new
DELETE: solo existe :old
UPDATE: existen :old y :new
Para usarlos en una claúsula WHEN se le quitan los dos puntos.
espero que te sea util