【发布时间】:2019-04-27 10:37:09
【问题描述】:
我有两张桌子:paper 和 paperselection。
在我的代码中,我想将 rank 属性高于 4 的任何纸张从 paper 表放入 paperselection 表中
之后,我要做的是在将值插入paperselection 表后,将主键(papNo)从paper 带到paperselection。
我这里有两个触发器
---first trigger---
CREATE OR REPLACE TRIGGER paperselection_tr
BEFORE INSERT OR UPDATE OF Rank ON paper
FOR EACH ROW
BEGIN
IF :NEW.rank > 4
THEN insert into paperselection (Papno, journalno, title, pdate)
values (:old.papno, :new.journalno, :new.title, :new.pdate);
END IF;
END;
---second trigger----
CREATE OR REPLACE TRIGGER paperselection_tr2
After insert or update ON paperselection
FOR EACH ROW
BEGIN
update paperselection
set paperselection.papno = paper.papno
where paper.title = paperselection.title;
end;
由于我的表格设计,我无法将:old.papno 设置为:new.papno。
但它不断给出我的错误:
LINE/COL ERROR --------- ------------------------------------------------------------- 2/1 PL/SQL: SQL Statement ignored 4/7 PL/SQL: ORA-00904: "PAPER"."TITLE": invalid identifier Errors: check compiler log
【问题讨论】:
-
您的触发器
paperselection_tr将papno插入到paperselection表中,那么您的第二个触发器paperselection_tr2的意义何在? -
嗯,好吧,当您将记录插入
paper时,您试图解决的问题是:old.papno为空?如果是这样,您需要对此进行解释:“由于我的表格设计,我无法将:old.papno设置为:new.papno”。你的桌子设计怎么样???