【发布时间】:2019-12-18 19:11:50
【问题描述】:
我有这些表
PUBRED (cod_pub, title, year, type, medium)
AUTHOR (login, name, surname, institution, country)
AUTHOR_ONE (login, cod_pub)
PUB_CITA (cod_pub, cod_pub_cited)
而且我必须让出版物的引用总是在它之后
我有以下触发器,但它给了我编译错误,我在其他问题中没有发现任何错误
Create or replace trigger works_trg_02
Before insert or update on pub_cita
For each row
Declare
Cnt number;
Begin
Select count (*) into cnt
from pubred pr
inner join pub_cita pc
on :new.pc.cod_pub = pr.cod_pub
inner join pubred pr2
on :new.pc.cod_pub_cited = pr2.cod_pub
where pr.year < pr2.year then 1
Else 0 end = 0;
If cnt <> 0 then
Raise_application_error ('-20001', 'Not possible');
End if;
End works_trg_02;
/
我从“ORA-24344:编译错误成功”中得到典型错误
在进行插入以证明这一点时,我得到'ORA-04098:触发器'FIDDLE_WIXYFBGEUZDXILZQBEGR.WORKS_TRG_02'无效并且重新验证失败'
我在此处搜索了其他类似的问题,以调整我的初始解决方案,但我没有成功,我相信所有内容都是正确的。
【问题讨论】:
-
这部分
where pr.year < pr2.year then 1 Else 0 end = 0;没有任何意义。除此之外,您不能从同一表的触发器内的pub_cita中选择pub_cita