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: antes de insertar el disparador
Este tutorial de Oracle describe cómo Crear un activador ANTES DE INSERTAR Sintaxis y ejemplos en Oracle.
describir
Una antes de insertar el gatillo Significa que Oracle disparará este disparador antes de ejecutar la operación INSERTAR.
sintaxis
sintaxis para crear un antes de insertar el gatillo En Oracle/PLSQL es:
CREATE [ OR REPLACE ] TRIGGER trigger_name BEFORE INSERT 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. ANTES DE INSERTAR significa que el activador se disparará antes de que se realice la operación INSERTAR. table_name El nombre de la tabla donde se creó el disparador.
límite
- No puede crear disparadores ANTES en las vistas.
- Puede actualizar el valor :NUEVO.
- No puede actualizar el valor :OLD.
notas
- Consulte también cómo crear disparadores DESPUÉS DE ELIMINAR, DESPUÉS DE INSERTAR, DESPUÉS DE ACTUALIZAR, ANTES DE ELIMINAR y ANTES DE ACTUALIZAR.
- Consulte también Cómo eliminar disparadores.
ejemplo
Veamos un ejemplo de cómo crear un disparador ANTES DE INSERTAR usando la instrucción 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), create_date date, created_by varchar2(10) );
Entonces podemos usar la declaración CREATE TRIGGER para crear un disparador ANTES DE INSERTAR 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_before_insert BEFORE INSERT ON orders FOR EACH ROW DECLARE v_username varchar2(10); BEGIN -- Find username of person performing INSERT into table SELECT user INTO v_username FROM dual; -- Update create_date field to current system date :new.create_date := sysdate; -- Update created_by field to the username of the person performing the INSERT :new.created_by := v_username; END; /