Oracle/PLSQL: desencadenar después de eliminar

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: desencadenar después de eliminar

Este tutorial de Oracle describe cómo Crear un disparador DESPUÉS DE ELIMINAR Sintaxis y ejemplos en Oracle.

describir

Una Activar después de eliminar Indica que Oracle activará este activador después de una operación DELETE.

sintaxis

crear una gramática Activar después de eliminar En Oracle/PLSQL es:

CREATE [ OR REPLACE ] TRIGGER trigger_name
AFTER DELETE
   ON table_name
   [ FOR EACH ROW ]

DECLARE
   -- variable declarations

BEGIN
   -- trigger code

EXCEPTION
   WHEN ...
   -- exception handling

END;

parámetro o parámetro

o reemplazar opcional. Si se especifica, le permite recrear un disparador ya existente para que pueda cambiar la definición del disparador sin emitir una instrucción DROP TRIGGER. trigger_name El nombre del activador que se va a crear. AFTER DELETE significa que el disparador se activa después de una operación DELETE. table_name El nombre de la tabla en la que se creó el disparador.

límite

  • No puede crear disparadores DESPUÉS en las vistas.
  • No puede actualizar el valor :NUEVO.
  • No puede actualizar el valor :OLD.

notas

  • Consulte también Cómo crear disparadores DESPUÉS DE INSERTAR, DESPUÉS DE ACTUALIZAR, ANTES DE ELIMINAR, ANTES DE INSERTAR y ANTES DE ACTUALIZAR.
  • Consulte también Cómo eliminar disparadores.

ejemplo

Veamos un ejemplo de cómo crear un disparador AFTER DELETE usando la sentencia CREATE TRIGGER.

Si creas una tabla como esta:

CREATE TABLE orders
( order_id number(5),
  quantity number(4),
  cost_per_item number(6,2),
  total_cost number(8,2)
);

Luego, podemos usar la declaración CREATE TRIGGER para crear un disparador AFTER DELETE de la siguiente manera:

propina: Al usar SQLPlus, debe ingresar una barra inclinada en una nueva línea después del disparador. De lo contrario, el script no se ejecutará.

CREATE OR REPLACE TRIGGER orders_after_delete
AFTER DELETE
   ON orders
   FOR EACH ROW

DECLARE
   v_username varchar2(10);

BEGIN

   -- Find username of person performing the DELETE on the table
   SELECT user INTO v_username
   FROM dual;

   -- Insert record into audit table
   INSERT INTO orders_audit
   ( order_id,
     quantity,
     cost_per_item,
     total_cost,
     delete_date,
     deleted_by)
   VALUES
   ( :old.order_id,
     :old.quantity,
     :old.cost_per_item,
     :old.total_cost,
     sysdate,
     v_username );

END;

/