camoes Posted December 10, 2012 at 01:07 PM Report #486429 Posted December 10, 2012 at 01:07 PM Boa tarde. precisava de fazer um “Trigger que garanta que assegure não ser possível registar uma intervenção associada a uma atividade de um projeto que já tenha sido dada como concluída .” as tabelas são as seguintes: (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 os estados, nas 2 tabelas, são independentes e 4= fechado em ambas. podem-me ajudar? Já tentei várias abordagens mas dá sempre erros vários e que não compreendo o mesmo se passa quando tento fazer " 1. Trigger que atualize o estado dum projeto quando se alterar o estado da ultima atividade para concluída. "
jsWizard Posted December 10, 2012 at 01:19 PM Report #486431 Posted December 10, 2012 at 01:19 PM o melhor é colocares o código que estás a fazer no trigger e depois talvez seja mais simples te ajudar..
renafi Posted December 10, 2012 at 01:20 PM Report #486433 Posted December 10, 2012 at 01:20 PM Mostra o código do trigger. E dava jeito que mostrares os erros. Se for o que estou a pensar, que é o típico erro "Mutating", tens de recorrer a Compound Triggers. Mas dá mais detalhes Oracle Certified Professional - AdministraçãoOracle Certified Professional - Pl/sqlMCPD - Microsoft Certified Professional DeveloperMCTS - Microsoft Certified Technology Specialist
camoes Posted December 16, 2012 at 10:08 AM Author Report #487342 Posted December 16, 2012 at 10:08 AM (edited) create or replace trigger trg7_intervencao_atividade before insert on intervencao for each row declare id_ativ_temp number; id_estado_temp number; ex_estadoconcluido exception; begin select id_actividade from intervencao into id_ativ_temp; select id_estado_atividade from estados_atividade into id_estado_temp where intervencao.id_actividade=id_ativ_temp; if intervencao.id_estado_temp =4 then raise ex_estadoconcluido; end if exception when ex_estadoconcluido then raise_application_error(-20000, 'Intervencao com atividade ja concluida!'); when others then raise_application_error(-20001, sqlerrm(sqlcode)); end trg7_intervencao_atividade; Error(6,5): PL/SQL: SQL Statement ignored Error(6,43): PL/SQL: ORA-00933: SQL command not properly ended Error(7,5): PL/SQL: SQL Statement ignored Error(7,60): PL/SQL: ORA-00933: SQL command not properly ended Error(12,1): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: ; The symbol ";" was substituted for "EXCEPTION" to continue. Edited December 16, 2012 at 01:58 PM by apocsantos
jsWizard Posted December 18, 2012 at 10:33 PM Report #487761 Posted December 18, 2012 at 10:33 PM (edited) o meu outro post ?? apagado? 😄 LOL ups.. estou no tópico errado! 😄 kakak inté! já agora, se o erro fosse "table is muttating", quer dizer que estás a fazer asneira 😄 ou seja, estás a fazer um update com o comando update a resgistos que estão a ser actualizados na mesma transação! hasta! mais uma dica: SELECT .. INTO .. FROM e não SELEC .. FROM .. INTO pronto.. mais uma dica.. o END IF tb precisa de ; e mais não digo 😄 Edited December 18, 2012 at 10:31 PM by jsWizard
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