lunes, 13 de septiembre de 2010

CREACION DE UN TRIGGER BASE DE DATOS


Nombre
CREATE TRIGGER  --  Crea un nuevo disparador
Synopsis
CREATE TRIGGER name
  { BEFORE | AFTER } { event
  [OR ...] } ON table
  FOR EACH { ROW | STATEMENT } EXECUTE PROCEDURE
  ER">funcBLE>
  ( arguments )
Entradas
name
El nombre de un disparador existente.
table
El nombre de una tabla.
event
Uno entre INSERT, DELETE o UPDATE.
funcname
Una funcin suministrada por el usuario.
Salidas
CREATE
INSERT: invoca al trigger cuando una nueva fila es insertada en la tabla asociada con el trigger.
DELETE: invoca al trigger cuando una fila asociada a la tabla es borrada.
UPDATE: invoca al trigger cuando una fila asociada a la tabla es actualizada
UPDATE OF column-list: invoca al trigger cuando una fila de la tabla asociada es actualizada y cuando la columna de la column-list ha sido modificada.

El uso de OR REPLACE permite sobreescribir un trigger existente.
Si se omite, y el trigger existe, se producirá, un error.
El modificador FOR EACH ROW indica que el trigger se disparará cada vez que se desee hacer operaciones sobre una fila de la tabla. Si se acompaña del modificador WHEN, se establece una restricción; el trigger solo actuará, sobre las filas que satisfagan la restricción.
Borrar un Trigger
Si se desea eliminar (borrar) un trigger, se usa la instrucción:
SQL> DROP TRIGGER name
Modificar un Trigger
Si se desea  (modificar) un trigger, se usa la instrucción:
ALTER TRIGGER trigger_name
ON table
[WITH ENCRYPTION]
{
    {FOR { [DELETE] [,] [UPDATE] [,][INSERT] }
        [NOT FOR REPLICATION]
        AS
            sql_statement [...n]
    }
    |
    {FOR { [INSERT] [,] [UPDATE] }
        [NOT FOR REPLICATION]
        AS
        {    IF UPDATE (column)
            [{AND | OR} UPDATE (column)]
                [...n]
            | IF (COLUMNS_UPDATED() {bitwise_operator} updated_bitmask)
                { comparison_operator} column_bitmask [...n]
        }
                sql_statement [...n]
    }
}