[RESOLVIDO] Triggers (Oracle 10g)

1 resposta
T

Boa tarde galera,
tenho a seguinte tabela:

CREATE TABLE  "PRODUTOS" 
   (	"CODIGO" NUMBER NOT NULL ENABLE, 
	"DESCRICAO" VARCHAR2(40), 
	"QUANT" NUMBER, 
	"VLR_UNIT" NUMBER(5,2), 
	"VLR_TOTAL" NUMBER(5,2), 
	"DATA_ALT" DATE
   )
/

Gostaria de criar 2 triggers para ela:
uma q altera o VLR_TOTAL ao inserir, alterar ou apagar a coluna QUANT e/ou VLR_UNIT pela fórmula
VLR_TOTAL = QUANT*VLR_UNIT

e outra para inserir a data do sistema em DATA_ALT quando for feita qualquer alteração em uma linha.

Agradeço desde já à todos.

1 Resposta

T

Aê galera, tópico resilvido
Criei a seguinte trigger para alterar a data (DATA_ALT) e tá funcionando perfeitamente até agora:

CREATE OR REPLACE TRIGGER "pegadata" BEFORE insert or update or delete on "PRODUTOS" for each row begin SELECT SYSDATE INTO :new.data_alt FROM dual; end; / ALTER TRIGGER "pegadata" ENABLE /

e para fazer a alteração no valor total de acordo com a quantidade e valor unitário (VLR_TOTAL=(QUANT*VLR_UNIT)) criei a seguinte procedure:

create or replace PROCEDURE PROC_ALTERATOTAL ( CODIGO IN NUMBER ) AS BEGIN update THIAGO.produtos SET vlr_total=quant*vlr_unit WHERE codigo=codigo; END PROC_ALTERATOTAL;

Agora por fim vou criar uma trigger q vai disparar essa procedure passando como parâmetro o código da linha alterada.

Obrigado à todos que tentaram!

Criado 14 de outubro de 2012
Ultima resposta 24 de out. de 2012
Respostas 1
Participantes 1