Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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;
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;
é
select campo1,campo2 ...
into variavel1, variavel2 ...
e
If xxxxxxx then
begin
...
begin
Ajudou ?