Ir ao conteúdo
  • Cadastre-se
EduardoMQS

Oracle Problema com um gatilho

Posts recomendados

Minha tabela:

 

create table prevenda(
codprevenda number not null primary key,
quantidade number(2) not null,
nota_fiscal number null,
venda number null,
produto number not null,
constraint fk_prevenda_notafiscal foreign key (nota_fiscal) references nota_fiscal (num),
constraint fk_prevenda_venda foreign key (venda) references venda (codvenda),
constraint fk_prevenda_produto foreign key (produto) references produto (codprod)
);

 

Meu gatilho:

 

create or replace trigger prevenda_insert before insert on prevenda for each row
begin
if :new.nota_fiscal = null and :new.venda = null then
raise_application_error(-20500, 'Entre nota fiscal e venda, no mínimo 1 campo deve ser preenchido!');
elsif :new.nota_fiscal <> null and :new.venda <> null then
raise_application_error(-20500, 'Entre nota fiscal e venda, no máximo 1 campo deve ser preenchido!');
end if;
end;

 

Eu tento fazer:

 

insert into prevenda values (1, 1, null, null, 1);

 

E o banco insere os dados com os dois valores null que eu não quero que insira.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@EduardoMQS A sintaxe parece estar errada, tenta assim:

 

create or replace trigger prevenda_insert 
before insert 
    on prevenda

    for each row
    
begin


if (:new.nota_fiscal = null and :new.venda = null) then
    raise_application_error(-20500, 'entre nota fiscal e venda, no mínimo 1 campo deve ser preenchido!');
end if;
    
if (:new.nota_fiscal <> null and :new.venda <> null) then
    raise_application_error(-20500, 'entre nota fiscal e venda, no máximo 1 campo deve ser preenchido!');
end if;


end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ederlap

 

Meu gatilho agora:

 

create or replace trigger prevenda_insert before insert on prevenda for each row
begin
if ((:new.nota_fiscal = null) and (:new.venda = null)) then
raise_application_error(-20500, 'Entre nota fiscal e venda, no mínimo 1 campo deve ser preenchido!');
elsif ((:new.nota_fiscal <> null) and (:new.venda <> null)) then
raise_application_error(-20500, 'Entre nota fiscal e venda, no máximo 1 campo deve ser preenchido!');
end if;
end;

 

E continuei com o mesmo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!