Trigger impedir inserção verificando campo de outra tabela

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Leo Bil
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 21 Fev 2007 11:18 am
Localização: montes claros minas gerais

Boa tarde pessoal,
não estou conseguindo criar uma trigger para impedir a inserção em uma tabela se o campo de outra for nulo.
tipo tenho 2 tabelas que são amarradas quero impedir a inserção na tabela pedidos se o campo cpf da tabela clientes for nulo.
alguém da um help ?
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Você chegou à criar esta Trigger?
Coloque o código dela aqui pra gente...
Leo Bil
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 21 Fev 2007 11:18 am
Localização: montes claros minas gerais

bom tentei,
segue o codigo

Selecionar tudo

create or replace trigger trg_proibe_pedido_sem_cpf
before insert on pedidos
for each row

declare 
cursor c_cpf is 
select nr_cpf from em.cliente where cliente.cd_cliente = :new.pedidos.cd_cliente; 
v_cpf varchar2(11);

begin
open c_cpf;
fetch c_cpf into v_cpf;
if :new.cd_convenio = 51 and v_cpf is null then
raise_application_error(-20500,'Falta informar o CPF do Cliente !!! Favor informar. Obrigado ');
end if;
close c_cpf;
end;
Leo Bil
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 21 Fev 2007 11:18 am
Localização: montes claros minas gerais

o erro que da é

Selecionar tudo

ORA-22806: não é um objeto ou REF
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

:NEW.CD_CONVENIO faz parte da tabela de pedidos?
Coloca a estrutura dela aqui pra gente dar uma olhada, pode ser?
Leo Bil
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 21 Fev 2007 11:18 am
Localização: montes claros minas gerais

consegui
acho que como estava criando a trigger sobre a tabela pedidos não precisava colocar :new.pedidos.cd_cliente e sim so :new.cd_cliente o codigo ficou assim

Selecionar tudo

create or replace trigger trg_proibe_pedido_sem_cpf 
before insert on pedidos 
for each row 

declare 
cursor c_cpf is 
select nr_cpf from em.cliente  cliente where cliente.cd_cliente = :new.cd_cliente; 
v_cpf varchar2(11); 

begin 
open c_cpf; 
fetch c_cpf into v_cpf; 
if :new.cd_convenio = 51 and v_cpf is null then 
raise_application_error(-20500,'Falta informar o CPF do Cliente !!! Favor informar. Obrigado '); 
end if; 
close c_cpf; 
end;
Muito obrigado pela ajuda :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes