一个触发器的问题。

jeoky 2005-07-27 09:18:42
写了一个简单的触发器
CREATE OR REPLACE TRIGGER TRI_REPORT_ORGTREETEMP_UPD
AFTER UPDATE ON ORG_CORP_TREE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

ORGNUM INTEGER;

BEGIN

SELECT COUNT(*) INTO ORGNUM FROM ORG_CORP_TREE;

END;

但在更新表ORG_CORP_TREE时,报错:
表 KX_ADMIN.ORG_CORP_TREE 发生了变化,触发器/函数不能读
ORA-06512: 在"KX_ADMIN.TRI_REPORT_ORGTREETEMP_UPD", line 7
ORA-04088: 触发器 'KX_ADMIN.TRI_REPORT_ORGTREETEMP_UPD' 执行过程中出错.

...全文
79 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jj601 2005-07-27
  • 打赏
  • 举报
回复
我的也是when inserting then insert into B@REP remote select * from A where a13 = :new.a13报错ORA-04091:表A发生了变化,触发器/函数不能读,ORA-04088:触发器执行过程中出错。怎么回事呢?A,B结构完全一样
jeoky 2005-07-27
  • 打赏
  • 举报
回复
如果表ORG_CORP_TREE中的字段ORGBCFL、ORGNAME、ORGSCFL发生变化时,触发器SELECT COUNT(*) INTO ORGNUM FROM ORG_CORP_TREE;
这个触发器该如何写呢?
njhart2003 2005-07-27
  • 打赏
  • 举报
回复
行触发器,不能对本表进行dml操作。
sugar900 2005-07-27
  • 打赏
  • 举报
回复
create table t1 as SELECT * FROM ORG_CORP_TREE;

CREATE OR REPLACE TRIGGER TRI_REPORT_ORGTREETEMP_UPD
AFTER UPDATE ON ORG_CORP_TREE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE

ORGNUM INTEGER;

BEGIN

SELECT COUNT(*) INTO ORGNUM FROM t1;

END;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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