- Este tópico contém 7 respostas, 3 vozes e foi atualizado pela última vez 18 anos, 8 meses atrás por
Anônimo.
-
AutorPosts
-
17 de julho de 2007 às 4:23 pm #80058
Anônimo
Pessoal tenho a seguinte trigger abaixo:
create or replace trigger delete_medicoes
after delete on A
for each row
declarebegin
delete B
where data_med = to_date(:new.ame_data, 'DD/MM/RRRR hh24:mi:ss');
end delete_medicoes;
Quando eu apago algum registro na tabela A ele deveria apagar o registro com a mesma data e hora na tabela B, porém o registro não é apagado e não retorna nenhum erro.
Alguém tem alguma dica do que pode estar errado?17 de julho de 2007 às 7:22 pm #80059Marcio68Almeida
Participantedelete B
where data_med = to_date(:new.ame_data, 'DD/MM/RRRR h24:mi:ss');
Aqui está retornando uma única linha ???
Não deveria trazer também a chave desta tabela ???17 de julho de 2007 às 10:19 pm #80060Anônimo
Cara essa trigger é apenas para a compatibilidade de um sistema que acessa uma tabela sem chave, por isso em pego a data para excluir.
Como não tenho muito intimidade com o Oracle como eu consigo testar essa execução da trigger para saber se está retornando o valor correto?17 de julho de 2007 às 10:56 pm #80061Marcio68Almeida
ParticipanteSe você colocar o valor da data na cláusula select * você verá as linhas que retornarão…
A questão é, se voltar mais de uma linha e você colocou a comparação igual, então vai dar erro…
Se você quer que retorne mais de uma linha e excluir todas as que retornarem, então tem que colocar IN no lugar de igual.18 de julho de 2007 às 3:39 am #80062DanielB
Participanteyo lo que veo es que estas utilizando :new. en un trigger delete cuando solo tiene valor y debe ser utilizado el 😮 ld
18 de julho de 2007 às 4:49 pm #80066Anônimo
Pessoal coloquei old e nada de funcionar, mudei para select e retornou alguma coisa, como eu vejo o que retornou?
Alterei um pouco o código, veja como está agora:
create or replace trigger delete_medicoes
after delete on A
for each row
declare
teste number;
begin
select peso
into teste
from B
where data_med in to_date(:old.ame_data, 'DD/MM/RRRR hh24:mi:ss');
exception
when no_data_found then
null;
when others then
null;
end A;
18 de julho de 2007 às 8:58 pm #80070DanielB
Participanteel = es correcto, no es necesario in
data_med y ame_data son tipos date en las tablas?para ver el error puedes agregar en la excepciones
raise_application_error(-20001, sqlerrm);
en cada when(yo pondira solo el when others para testear)
y probar desde sqlplus o toad o la herramienta que uses18 de julho de 2007 às 10:01 pm #80071Anônimo
Pessoal valeu pela força, mas o que tava dando problema era o to_date.
Removi o bixo e agora tá rolando beleza.
Vlw pessoal. -
AutorPosts
- Você deve fazer login para responder a este tópico.