Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marceloa877

Trigger problema

Recommended Posts

CREATE TRIGGER "PREENCHE_CAPLIVNOME"

AFTER INSERT ON "CAPITULO" POSITION 0

FOR EACH ROW

declare
 cont,vcap number;
 vcaplivnome varchar2(100)

begin
select distinct l.livid,livnome,c.capid,caplivro,caplivnome from livro l, capitulo c
where l.livid = c.capid into cont;

if cont < 0 then
update capitulo set caplivnome = vcaplivnome where vcap=vcapliv;

end

 

ERRO: ORA-04079: especificação de gatilho inválida

Compartilhar este post


Link para o post
Compartilhar em outros sites
é   

 

 

select campo1,campo2 ...    

into        variavel1, variavel2 ...

 

 

e

 

 

If xxxxxxx then

end if;

 

Cont teria de ser preenchido por um

 

 

select count(*)

ou tratar o select

 


begin

  ...

  begin

     select campo1,campo2

     into var1,var2

     where ....;

     --

     update ....;

  exception

     when no_data_found then

         null;

     when others then

        raise;

  end;

 

Ajudou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Motta desculpa pelos erros estou estudando oracle agora, e errando muito mudei mas continua dando erro de gatilho

ORA-04079: especificação de gatilho inválida


TODA VES QUE INSERIR EM CAPITULO
VERIFICAR CAPLIVRO = LIVID
SE FOR IGUAL ENTÃO
TEM QUE INSERIR EM CAPITULO,CAPLIVNOME O LIVNOME

Tabelas:

CREATE TABLE "LIVRO"
("LIVID" NUMBER NOT NULL ENABLE,
"LIVNOME" VARCHAR2(40) NOT NULL ENABLE,
"COMENT" VARCHAR2(500),
CONSTRAINT "LIVRO_PK" PRIMARY KEY ("LIVID") ENABLE
)
/

CREATE table "CAPITULO" (
"CAPID" NUMBER NOT NULL,
"CAPLIVRO" NUMBER NOT NULL,
"CAPLIVNOME" VARCHAR2(100)
"CAPNUM" NUMBER,
"COMENT" VARCHAR2(500),
constraint "CAPITULO_PK" primary key ("CAPID")
)
/
ALTER TABLE CAPITULO ADD CAPLIVNOME VARCHAR2(100)
ALTER TABLE CAPITULO ADD CONSTRAINT FK_CAPLIVID FOREIGN KEY (CAPLIVRO) REFERENCES LIVRO (LIVID)


 

CREATE TRIGGER "PREENCHE_CAPITULO_NOME"
AFTER INSERT ON "CAPITULO" POSITION 0

FOR EACH ROW

declare
 vlivnome varchar2(50);
 vlivid.vcapitulo number;
 
begin
select distinct l.livid into vlivid,livnome into vlivnome,c.caplivro into vcapitulo from livro l, capitulo c
where l.livid = c.capid;

if (vcapitulo < 0) then
update capitulo

set caplivnome = vcaplivnome

where vcapliv=vlivid;

exception

     when no_data_found then

         null;

     when others then

        raise;


endif
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites


CREATE TRIGGER "PREENCHE_CAPITULO_NOME"

AFTER INSERT ON "CAPITULO" POSITION 0

 

FOR EACH ROW

 

declare

vlivnome varchar2(50);

vlivid.vcapitulo number;

 

begin

select distinct l.livid into vlivid,livnome into vlivnome,c.caplivro

into vcapitulo

from livro l, capitulo c

where l.livid = c.capid;

if (vcapitulo < 0) then

update capitulo

set caplivnome = vcaplivnome

where vcapliv=vlivid;

end if;

exception

when no_data_found then

null;

when others then

raise;

end;

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.