Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Triggers
1. |||------|----T R I G G E R S---- |------|||
--EJEMPLO 0
SET SERVEROUTPUT ON
CREATE TABLE TABLA_TG(CAMPO1 NUMBER);
CREATE OR REPLACE TRIGGER TG_TABLA_01
BEFORE INSERT ON TABLA_TG
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('CODIGO LIBERADO ANTES DEL INSERT.');
END;
/
CREATE OR REPLACE TRIGGER TG_TABLA_02
AFTER INSERT ON TABLA_TG
DECLARE
BEGIN
DBMS_OUTPUT.PUT_LINE('CODIGO LIBERADO DESPUES DEL INSERT.');
END;
/
INSERT INTO TABLA_TG VALUES(1022086);
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------
--EJEMPLO 1
SET SERVEROUTPUT ON size 1000000;
CREATE TRIGGER cuota BEFORE INSERT OR
UPDATE OF cuota2 ON DOS FOR EACH ROW// por cada renglon
BEGIN
IF (:new.cuota2<=0) then
raise_application_error(-20000, 'No se permite una cuota negativa o igual
a cero');
END IF;
END cuota;
/
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------------------------
--EJEMPLO 2
set serveroutput on size 1000000;
create or replace trigger alumnuub_I_D_U
AFTER INSERT OR DELETE OR UPDATE ON UNO
BEGIN
IF INSERTING THEN
dbms_output.put_line('Nuevo Alumno se ha Agregado');
end if;
if updating then
dbms_output.put_line('Un Alumno se ha Modificado');
end if;
if deleting then
dbms_output.put_line('Un Alumno se ha Eliminado');
end If;
END alumnuub_I_D_U;
/
insert into uno (clave1)values('1020');
2. update uno set nombre1='lulu' where clave1='1020';
select * from uno;
update uno set nombre1='lulu',apellido1='flores' where clave1='1020';
delete uno where clave1='1020';
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----------------------
---EJEMPLO 3------
CREAR UN TRIGGER PARA ACTUALIZAR EN CASCADA
---Tabla papa
CREATE TABLE t (a VARCHAR2(10) primary key);
---tabla Hijo0
Create table Tv (B number, a Varchar2(10),
constraint na FOREIGN KEY(A) REFERENCES t(A));
---TRIGGER
Create or REPLACE TRIGGER T_U BEFORE UPDATE
ON t FOR EACH ROW
BEGIN
UPDATE tv SET a=:NEW.a WHERE a=:OLD.a;
END T_U;
/
INSERT INTO t VALUES('tics');
INSERT INTO tv VALUES(10220286,'tics');
INSERT INTO tv VALUES(10220287,'tics');
INSERT INTO tv VALUES(10220288,'tics');
INSERT INTO tv VALUES(10220289,'tics');
actualizar un registro -------
update t set a='inf' where a= 'tics';
----bORRA REGISTRO
CREATE OR REPLACE TRIGGER T_B BEFORE DELETE
ON t FOR EACH ROW
BEGIN
DELETE tv WHERE a=:OLD.a;
END T_B;
/
DELETE tv where a='inf';
--------------------------------------------------------------------------------
----------------------------------------------------------------------------
--------ACTIVADO , DESACTIVADO Y BORRADO DE TRIGGERS-------------------
DESACTIVACION-----------
ALTER TRIGGER UNO_I_D_U DISABLE;
3. ACTIVACION----------------
ALTER TRIGGER UNO_I_D_U ENABLE;
BORRAR--------
DROP TRIGGER UNO_I_D_U;
--------------------------------------------------------------------------------
-----------------------------------
--EJEMPLO 3
//TRIGGER PARA ACTUALIZAR EN CASCADA
CREATE TABLE t(a VARCHAR2(10) primary key);
//tabla hijo
CReaTE TABLE tv(B number, a varchar2(10),
constraint na foreign key(a) references t(a));
//TRIGGER
Create or replace trigger t_u before update
On t for each row
Begin
Update tv set a=:new.a where a=:old.a;
End t_u;
/
INSERT INTO T VALUES('ASSAD');
INSERT INTO TV VALUES(111,'ASSAD');
INSERT INTO T VALUES('D');
INSERT INTO TV VALUES(112,'D');
INSERT INTO TV VALUES(12,'Dado');
INSERT INTO TV VALUES(912,'D');
INSERT INTO TV VALUES(312,'D');
//ACTUALIZA EN CASCADA
update t set a= 'DADO' where a='D';
//BORRADO EN CASCADA ASIA TV
Create or replace trigger b_u before delete
On t for each row
Begin
delete tv where a=:old.a;
End t_u;
/
// BORRADO EN CASCADA
delete tv where a='DADO';