Está en la página 1de 21

CREATE TABLE clientes

clie_codigo SERIAL NOT NULL PRIMARY KEY,

clie_nombre VARCHAR(50),

clie_direccion VARCHAR(200),

clie_fecha_ing DATE

);

CREATE TABLE log_clientes(

clie_codigo INT,

clie_nombre VARCHAR(50),

clie_direccion VARCHAR(200),

clie_fecha_ing DATE,

log_movimiento VARCHAR(10),

log_fecha_mov TIMESTAMP

);

CREATE OR REPLACE FUNCTION tg_logcliente() RETURNS TRIGGER AS

$BODY$

BEGIN

IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO


log_clientes( clie_codigo,clie_nombre,

clie_direccion,clie_fecha_ing,log_movimiento,log_fecha_mov )

VALUES(

NEW.clie_codigo, New.clie_nombre, NEW.clie_direccion,

NEW.clie_fecha_ing, TG_OP, CURRENT_TIMESTAMP

);

RETURN NEW;

END IF;

IF(TG_OP='DELETE' )THEN INSERT INTO log_clientes( clie_codigo,clie_nombre,


clie_direccion,clie_fecha_ing,log_movimiento,log_fecha_mov )

VALUES(

OLD.clie_codigo,OLD.clie_nombre, OLD.clie_direccion,

OLD.clie_fecha_ing, TG_OP, CURRENT_TIMESTAMP

);

RETURN OLD;

END IF;

END;

$BODY$ LANGUAGE 'plpgsql';

CREATE TRIGGER tg_log AFTER INSERT OR UPDATE OR DELETE

ON clientes FOR EACH ROW EXECUTE PROCEDURE tg_logcliente()

idclase SERIAL NOT NULL PRIMARY KEY,

///////////////////////////////////////////////////////////////////////////////////////////////////////
/

CREATE TABLE palogclassequipo(

idclassequipo INT,

nombre VARCHAR(50),

log_movimiento VARCHAR(10),

log_fecha_mov TIMESTAMP

);

CREATE OR REPLACE FUNCTION tg_palogclassequipo() RETURNS TRIGGER AS

$BODY$

BEGIN

IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO


palogclassequipo( idclassequipo,nombre,

log_movimiento,log_fecha_mov )
VALUES(

NEW.idclassequipo, New.nombre,

TG_OP, CURRENT_TIMESTAMP

);

RETURN NEW;

END IF;

IF(TG_OP='DELETE' )THEN INSERT INTO palogclassequipo( idclassequipo,nombre,

log_movimiento,log_fecha_mov )

VALUES(

OLD.idclassequipo,OLD.nombre, TG_OP, CURRENT_TIMESTAMP

);

RETURN OLD;

END IF;

END;

$BODY$ LANGUAGE 'plpgsql';

CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE

ON paclassequipo FOR EACH ROW EXECUTE PROCEDURE tg_palogclassequipo()

current_user o session_user para el usuario de la base de datos


CREATE TABLE palogempleado
(
idempleado integer ,
nombre character varying(30) ,
apellido character varying(30) ,
fechanacimiento date,
edad integer,
sexo integer,
tipo integer,
telefono character varying(10),
correo character varying(50),
estado integer,
dui character varying(10),
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogempleado() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
palogempleado( idempleado,nombre,apellido,fechanacimiento,
edad,sexo,tipo,telefono,correo,estado,dui,us,
log_movimiento,log_fecha_mov )
VALUES(
NEW.idempleado, New.nombre, New.apellido, New.fechanacimiento,
New.edad, New.sexo, New.tipo,
New.telefono, New.correo, New.estado, New.dui, New.us,
TG_OP, CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
palogempleado( idempleado,nombre,apellido,fechanacimiento,
edad,sexo,tipo,telefono,correo,estado,dui,us,
log_movimiento,log_fecha_mov )
VALUES(
OLD.idempleado, OLD.nombre, OLD.apellido,OLD.fechanacimiento,
OLD.edad, OLD.sexo, OLD.tipo,
OLD.telefono, OLD.correo, OLD.estado, OLD.dui,OLD.us,
TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON paempleado FOR EACH ROW EXECUTE PROCEDURE
tg_palogempleado()

CREATE TABLE pblogequipo


(
idequipo integer,
color character varying(25) ,
caracteristicas character varying(100) ,
correlativo character varying(7),
peso numeric(18, 2),
estado integer,
idclassequipo integer,
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogequipo() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
pblogequipo( idequipo,color,caracteristicas, correlativo,
peso, estado,idclassequipo,us,log_movimiento,log_fecha_mov )
VALUES(
NEW.idequipo, New.color, New.caracteristicas, New.correlativo, New.peso,
New.estado,
New.idclassequipo,New.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
pblogequipo( idequipo,color,caracteristicas, correlativo,
peso, estado,idclassequipo,us,log_movimiento,log_fecha_mov )
VALUES(
OLD.idequipo,OLD.color, OLD.caracteristicas, OLD.correlativo, OLD.peso,
OLD.estado,
OLD.idclassequipo,OLD.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pbequipo FOR EACH ROW EXECUTE PROCEDURE
tg_palogequipo()
CREATE TABLE pblogcliengte
(
idcliente integer,
nombre character varying(30) ,
apellido character varying(30) ,
fechanacimiento date,
edad integer,
sexo integer,
estado integer,
carnet character varying(8),
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogcliente() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
pblogcliengte( idcliente,nombre,apellido,
fechanacimiento,edad, sexo,estado,carnet ,
us,log_movimiento,log_fecha_mov )
VALUES(
NEW.idcliente, New.nombre, New.apellido, New.fechanacimiento,
New.edad, New.sexo,
New.estado,New.carnet,
New.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
pblogcliengte( idcliente,nombre,apellido,
fechanacimiento,edad, sexo,estado,carnet ,
us,log_movimiento,log_fecha_mov )
VALUES(
OLD.idcliente,OLD.nombre, OLD.apellido, OLD.fechanacimiento,
OLD.edad, OLD.sexo,
OLD.estado,OLD.carnet ,
Old.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pacliente FOR EACH ROW EXECUTE PROCEDURE tg_palogcliente()
CREATE TABLE palogzona
(
idzona integer ,
nombre character varying(30),
tipo integer,
cupo integer,
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogzona() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
palogzona( idzona,nombre,tipo, cupo,
us,log_movimiento,log_fecha_mov )
VALUES(
NEW.idzona, New.nombre, New.tipo, New.cupo,
NEW.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
palogzona( idzona,nombre,tipo, cupo,
us,log_movimiento,log_fecha_mov )
VALUES(
OLD.idzona,OLD.nombre, OLD.tipo, OLD.cupo,
OLD.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pazona FOR EACH ROW EXECUTE PROCEDURE tg_palogzona()

--------------------------------------------------------------------------------------------------------------------

CREATE TABLE paloginscripcion


(
idunionhorario integer,
fechainicio date,
fechafin date,
estado integer,
pago numeric(18,2),
carnet character varying(8) ,
fechadeinscripcion date,
horainscripcion timestamp,
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_loginscripcion() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
paloginscripcion( idunionhorario,fechainicio,
fechafin,
estado,pago,carnet,fechadeinscripcion,horainscripcion,us,log_movimiento,log_fecha_mov
)
VALUES(
NEW.idunionhorario, New.fechainicio, New.fechafin ,
New.estado,NEW.pago,New.carnet,
New.fechadeinscripcion,New.horainscripcion,New.us, TG_OP,
CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
paloginscripcion( idunionhorario,fechainicio, fechafin,

estado,pago,carnet,fechadeinscripcion,horainscripcion,us,log_movimiento,log_fecha_mov
)
VALUES(
OLD.idunionhorario,OLD.fechainicio, OLD.fechafin,
OLD.estado,OLD.pago ,OLD.carnet,
OLD.fechadeinscripcion,OLD.horainscripcion,OLD.us, TG_OP,
CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pcinscripcion FOR EACH ROW EXECUTE PROCEDURE
tg_loginscripcion()

CREATE TABLE palogpagoempleado


(
idpagoempleado integer ,
monto numeric(18, 2),
fecha date,
idempleado integer,
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogpagoempleado() RETURNS TRIGGER
AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
palogpagoempleado( idpagoempleado,monto, fecha,idempleado ,
us,log_movimiento,log_fecha_mov )
VALUES(
NEW.idpagoempleado, New.monto, New.fecha,New.idempleado,
NEW.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
palogpagoempleado( idpagoempleado,monto, fecha,idempleado ,
us,log_movimiento,log_fecha_mov )
VALUES(
OLD.idpagoempleado, OLD.monto, OLD.fecha, OLD.idempleado,
OLD.us ,TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pbpagoempleado FOR EACH ROW EXECUTE PROCEDURE
tg_palogpagoempleado()

CREATE TABLE palogunionhorario


(
idzona integer,
idclase integer,
idempleado integer,
idhorario integer,
estado integer,
idunionhorario integer,
us integer,
log_movimiento VARCHAR(10),
log_fecha_mov TIMESTAMP
);
CREATE OR REPLACE FUNCTION tg_palogunionhorario() RETURNS TRIGGER AS
$BODY$
BEGIN
IF(TG_OP='INSERT' OR TG_OP='UPDATE')THEN INSERT INTO
palogunionhorario( idzona,idclase,idempleado,idhorario,
estado,idunionhorario,us,log_movimiento,log_fecha_mov )
VALUES(
NEW.idzona, New.idclase, New.idempleado,
New.idhorario,New.estado,New.idunionhorario, NEW.us ,TG_OP,
CURRENT_TIMESTAMP
);
RETURN NEW;
END IF;
IF(TG_OP='DELETE' )THEN INSERT INTO
palogunionhorario( idzona,idclase,idempleado ,

idhorario,estado,idunionhorario,us,log_movimiento,log_fecha_mov )
VALUES(
OLD.idzona, OLD.idclase, OLD.idempleado,OLD.idhorario,
OLD.estado,OLD.idunionhorario,OLD.us,TG_OP, CURRENT_TIMESTAMP
);
RETURN OLD;
END IF;
END;
$BODY$ LANGUAGE 'plpgsql';
CREATE TRIGGER patg_log AFTER INSERT OR UPDATE OR DELETE
ON pbunionhorario FOR EACH ROW EXECUTE PROCEDURE
tg_palogunionhorario()

create database link "COSTO"


connect to "PRUEBA" identified by "prueba"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.11)(PORT = 1521))
)
(CONNECT_DATA =
(SID = XE)
)
)'
/

create database link "BRUJO"


connect to "PRUEBA" identified by "prueba"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.14)(PORT = 1521))
)
(CONNECT_DATA =
(SID = XE)
)
)'
/

select *from prueba.cuenta@brujo

disparador

CREATE OR REPLACE
TRIGGER cuenta_remote_insert
BEFORE INSERT ON cuenta
FOR EACH ROW
BEGIN
INSERT INTO cuenta@brujo (id, entidad_financiera, cuenta_habiente, tipo_cuenta, actualizado)
VALUES (:NEW.id, :NEW.entidad_financiera, :NEW.cuenta_habiente, :NEW.tipo_cuenta, 1);
:NEW.actualizado := 1;
END;

CREATE OR REPLACE

TRIGGER pendejo

BEFORE INSERT ON emple

FOR EACH ROW


BEGIN TRY

BEGIN TRAN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddep, 1);
:NEW.actualizado := 1;

COMMIT TRAN

END
END TRY

BEGIN CATCH

BEGIN TRAN

INSERT INTO empleado (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddep, 3);

:NEW.actualizado := 1;

COMMIT TRAN

END
END CATCH

CREATE OR REPLACE
TRIGGER culero
AFTER INSERT ON empleado
FOR EACH ROW
BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

END;

CREATE OR REPLACE

TRIGGER zorras

AFTER INSERT ON zorra

FOR EACH ROW

BEGIN

INSERT INTO zorra@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

END;

CREATE OR REPLACE TRIGGER emple

BEFORE INSERT OR UPDATE ON empleado


FOR EACH ROW

BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

END;

AFTER INSERT OR UPDATE ON

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet)
values (1,'Adonay','Sanchez',2,'virna','45','1')

create or replace TRIGGER emple
BEFORE INSERT OR UPDATE ON  empleado
 FOR EACH ROW
 BEGIN
INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salari
o, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :
NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;
 END;
CREATE OR REPLACE TRIGGER f

AFTER INSERT ON empleado

FOR EACH ROW

BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN

INSERT INTO empleado (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

RAISE;

END;

/
CREATE OR REPLACE PROCEDURE insert_row_proc AUTHID DEFINER AS

no_remote_db EXCEPTION;

PRAGMA EXCEPTION_INIT (no_remote_db, -20000);

BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

RAISE_APPLICATION_ERROR (-20000,’Base remota invalida.');

END;

CREATE OR REPLACE TRIGGER empreadobrujo

AFTER INSERT ON empleado

FOR EACH ROW

BEGIN

insert_row_proc;

END;

CREATE OR REPLACE TRIGGER ohmiobambinocaro

BEFORE INSERT ON empleado FOR EACH ROW

BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN


INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

END;

CREATE OR REPLACE PROCEDURE insert_row_proc AUTHID DEFINER AS

empleado EXCEPTION

PRAGMA EXCEPTION_INIT (empleado, -20000);

BEGIN

INSERT INTO empleado@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN

INSERT INTO empleado (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

RAISE_APPLICATION_ERROR (-20000, Opción invalida.');

END;

// funciona a la gran puta

CREATE OR REPLACE TRIGGER zorraDaniel

BEFORE INSERT OR UPDATE ON zorra

FOR EACH ROW

BEGIN

INSERT INTO zorra@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE ('Erro con el dblink');

END;

/
CREATE OR REPLACE TRIGGER putaDaniel

BEFORE INSERT OR UPDATE ON puta

FOR EACH ROW

BEGIN

Insert into puta@brujo as db (select * from puta as d);

INSERT INTO puta@brujo (idemp, nombres, apellidos, sexo, jefe, salario, iddet, actualizado)
VALUES (:NEW.idemp, :NEW.nombres, :NEW.apellidos, :NEW.sexo, :NEW.jefe, :NEW.salario, :NEW.iddet, 1);
:NEW.actualizado := 1;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE ('Erro con el dblink');

END;

Insert into puta@brujo(select * from puta where iddet=1 and not exists(se
lect idemp from puta@brujo where iddet=1));  

También podría gustarte