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; /