camoes Posted December 16, 2012 at 10:56 AM Report #487344 Posted December 16, 2012 at 10:56 AM 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
jsWizard Posted December 16, 2012 at 11:53 AM Report #487346 Posted December 16, 2012 at 11:53 AM 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é!
camoes Posted December 16, 2012 at 03:43 PM Author Report #487365 Posted December 16, 2012 at 03:43 PM 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
jsWizard Posted December 18, 2012 at 10:07 PM Report #487754 Posted December 18, 2012 at 10:07 PM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now