Categorías destacadas
programacion php    
Lista de foros

Duda Trigger Oracle


capoeira
28 de Julio del 2010

Muy buenas:
Tengo una duda, he creado un trigger para mi base de datos de oracle 10g, lo que quiero hacer es que cuando un registro cambie a estado 5000 cree una linea en una tabla, la duda que tengo es que ¿donde sabe la tabla que es? por que yo le digo la tabla donde coje los datos pero no sabe donde los tiene que copiar, adjunto codigo:

CREATE OR REPLACE TRIGGER ORCL.TRGEXPEDICION
BEFORE INSERT
ON MOVIANTO.VDBULTOCAB
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE CODIGOBULTO VARCHAR2(20);NUMEROPEDIDO VARCHAR2(20);DIVISION VARCHAR2(4);ALBARAN VARCHAR2(1);CODAGE VARCHAR2(4);FECHAINSERT DATE;FECHASCAN DATE;NOMBREUSUARIO varchar2(20);PALET varchar2(3);NUMEROBULTO varchar2(3);
BEGIN

IF :new.status = 5000 THEN
SELECT codbulto into codigobulto
FROM vdbultocab
WHERE codigobulto=:new.codbulto;

SELECT codped into numeropedido
FROM vdbultocab
WHERE numeropedido=:new.codped;

SELECT coddiv into division
FROM vdbultocab
WHERE division=:new.coddiv;

SELECT swtllevaalb into albaran
FROM vdbultocab
WHERE albaran=:new.swtllevaalb;

FECHAINSERT := to_date(to_char(to_date(:new.FECFINALIZA,'J'),'yyyymmdd')||' '||:new.HORAFINALIZA,'yyyymmdd hh24:mi:ss');

FECHASCAN := null;
NOMBREUSUARIO := null;
PALET := null;
end if;

END TRGEXPEDICION;
/

Gracias


Ruben Ramirez
28 de Julio del 2010

Debe incluir una sentencia INSERT, despues de obtener los datos


Carlos A. Romero m.
14 de Noviembre del 2010

Hola Capoeira,
solo tienes que hacer un pequeño cambio en tu trigger de BD,

IF :new.status = 5000 THEN
--------------------------queda igual---------
SELECT codbulto into bulto
FROM vdbultocab
WHERE codigobulto=:new.codbulto;

SELECT codped into numeropedido
FROM vdbultocab
WHERE numeropedido=:new.codped;

SELECT coddiv into division
FROM vdbultocab
WHERE division=:new.coddiv;

SELECT swtllevaalb into albaran
FROM vdbultocab
WHERE albaran=:new.swtllevaalb;

FECHAINSERT := to_date(to_char(to_date(:new.FECFINALIZA,\'J\'),\'yyyymmdd\')||\' \'||:new.HORAFINALIZA,\'yyyymmdd hh24:mi:ss\');

FECHASCAN := null;
NOMBREUSUARIO := null;
PALET := null;
-----------------------------------------------------
insert into NombreDeTuTabla( campo1, campo2....)
values(codigobulto, numeropedido,.....);
end if;

espero te sirva, saludos.

END TRGEXPEDICION;
/

 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon