棘手问题!各位帮忙!

Torrice 2004-12-24 02:01:29
我在A表上创建了触发器TRG_A
在TRG_A中有段代码是必需要查询A表中的记录的,这对于ORACLE是不允许的,因为在TRG_A中查询A表中的记录时系统会报“表正在发生变化,不能查询的错误”,但是又必须要查询A表,不知该怎么办了,请各位帮忙!
...全文
111 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ORARichard 2004-12-24
  • 打赏
  • 举报
回复
我写了一个读自身表的触发器,好象没问题啊

REATE OR REPLACE TRIGGER "WATCHDB"."TRIGGER_ON_INSERT" BEFORE INSERT ON "WATCHDB"."JBXX" REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW declare newid number;
begin
select count(*) into newid from jbxx;
insert into jbxxcs(lffh,id) values(:new.lffh,newid);
end;
ORARichard 2004-12-24
  • 打赏
  • 举报
回复
有MSN吗,或把before insert的触发器贴上来
Torrice 2004-12-24
  • 打赏
  • 举报
回复
错误:ORA-04091: 表 EDMS.AINSLABEL 发生了变化,触发器/函数不能读
ORARichard 2004-12-24
  • 打赏
  • 举报
回复
你先做一个on insert试试,看看有什么样的错
update和delete等会再说
Torrice 2004-12-24
  • 打赏
  • 举报
回复
我试过了,不行
ORARichard 2004-12-24
  • 打赏
  • 举报
回复
把after改成before试试
Torrice 2004-12-24
  • 打赏
  • 举报
回复
问题描述如下:
表A的数据结构:
SQL> desc ainslabel
INSTCODE NOT NULL VARCHAR2(12)
MEASITEM NOT NULL NUMBER(2)
STARTVALUE NUMBER
ENDVALUE NUMBER
ENDTIME DATE

我在该表上建了一个触发器TRG_AINSLABEL
CREATE OR REPLACE TRIGGER "TRG_AINSLABEL" after
INSERT OR DELETEOR UPDATE OF "ENDTIME", "ENDVALUE", "INSTCODE", "MEASITEM", "STARTVALUE" ON "AINSLABEL" FOR EACH ROW
部分内容如下:
if inserting then
.....
select nvl(startvalue,0) into n_startvalue from ainslabel
where instcode = v_instcode and measitem=:new.measitem;
...
elsif updating then
....
select nvl(startvalue,0) into n_startvalue from ainslabel
where instcode = v_instcode and measitem=:new.measitem;

else

...
select nvl(startvalue,0) into n_startvalue from ainslabel
where instcode = v_instcode and measitem=:new.measitem;
...
end if;

以上的三个Select 语句都不能执行,不知该如何解决


ORARichard 2004-12-24
  • 打赏
  • 举报
回复
把你要做的事描述一下
Torrice 2004-12-24
  • 打赏
  • 举报
回复
to ORARichard(没钱的日子......)
我不能建表级 的触发器,因为我还要使用:old 和 :new 中的内容
子陌红尘 2004-12-24
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER trigger_name
before|after INSERT
...
ORARichard 2004-12-24
  • 打赏
  • 举报
回复
建表级触发器,不要建行级触发器
北极星2013 2004-12-24
  • 打赏
  • 举报
回复
up,学习
Torrice 2004-12-24
  • 打赏
  • 举报
回复
难道没人知道?bzszp、leimin帮帮忙啊
Torrice 2004-12-24
  • 打赏
  • 举报
回复
就是在一个表的触发器里不允许查询本表的问题该如何解决啊?

17,078

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧