Jump to content

Trigger update


camoes
 Share

Recommended Posts

Boas.

Precisava de fazer um Trigger que atualize o estado dum projeto quando se alterar o estado da ultima atividade para concluída.

(projecto)

pat_projeto:

(pk)is_projeto,
id_pat,
estado
, designscao, orcamento, data_fim_prevista, valor_final, data_registo

atividade

(pk)id_atividade,(fk) id_projeto,
estado, tipo_atividade, data_inicio, data_fim, data_estado, custo_previsto_hora, data_registo
Link to comment
Share on other sites

Isto é um pedido de ajuda ou uma encomenda? 😄

É que não estou a ver dúvida nenhuma.. apenas "uma encomenda". Porque não tentas fazer o trigger e depois colocar dúvidas se tiveres problemas.

Para aprender as fazer as coisas é preciso ter um bocadinho de força de vontade e tentar.. ler um bocado de documentação.. ver exemplos, tentar entender os exemplos. Pedir a outros que façam o trabalho por ti não te vai ensinar nada..

inté!

Link to comment
Share on other sites

ja fiz n versões do triger e nunca dá certo.

a ultima:

create or replace trigger trg_ponto_8
 after update on atividade
 for each row

 begin

 update pat_projeto set estado=4
 where pat_projeto.id_projeto is in (select ID_PROJETO from vw_triger_8)
 and pat_projeto.id_projeto = atividade.id_projeto;

end;
/
select * from vw_triger_8;

CREATE view VW_TRIGER_8 AS
SELECT
*
FROM
pat_projeto
where
id_projeto NOT IN(SELECT id_projeto
                   FROM atividade
                   where ESTADO <>4);

SELECT
*
FROM
atividade;

o problema e que n entendo o que é que estpu a fazer mal.. mas nenhum procedure triger etc finciona

Link to comment
Share on other sites

tens de estudar um bocado mais a documentação do Oracle 😄

CREATE OR REPLACE TRIGGER trg_ponto_8
after UPDATE ON atividade
FOR each ROW

BEGIN

--se a actividade ficou concluida, então concluir o projecto (troca os ??? pelo valor correcto.. claro!)
if (:new.estado = ???) then
--antes deste update tb deves precisar de fazer um select para contar se existem actividades por terminar.. e só se não existir nenhuma, então fazer o update

UPDATE pat_projeto a
SET a.estado = 4
WHERE a.id_projeto = :new.id_projecto;
end if;

END;

Penso que já te dei umas pistas para ires no bom caminho! Pelo menos pelo que entendi.

Bom trabalho!

Já agora.. deves dar nomes com significados os objectos, variáveis, etc.. chamar ao trigger trg_ponto_8 não me parece que seja um nome muito jeitoso 😄

inté!

WTF ??

pahh.. o código ficou todo xinado.. com tags de e o camandro.. o editor passou-se.. pah.. não tenho paciência para limpar isto.. safa-te.. ou pede a algum admin do forum que limpe! LOL

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.