起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 262|回复: 17

[结]组织模型中加入一个人员时报触发器错**

[复制链接]
发表于 2008-4-25 09:46:56 | 显示全部楼层 |阅读模式
加入触发器对X3的人员表的数据同步到我的表中,出现报错,有图,请帮看看问题出在哪里?
我在开发端的组织模型中加入一个人员时报错

error0.jpg

481.5 KB, 下载次数: 125

回复

使用道具 举报

 楼主| 发表于 2008-4-25 09:48:38 | 显示全部楼层
弹出的小图如

error.jpg

47.87 KB, 下载次数: 121

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 09:49:57 | 显示全部楼层
--DROP TRIGGER HRtableTR
CREATE OR REPLACE TRIGGER HRtableTR
AFTER INSERT OR DELETE OR UPDATE ON U_ITSMSYS.TPERSON -- X3系统的人员表
FOR EACH ROW

BEGIN
   IF INSERTING THEN U_HR.TBL_MANPOWERINFO  -- 人力资源基本信息表
      INSERT INTO   (FGUID,PSNID,Name)
             VALUES (:new.FGUID,:new.FID,:new.FDISPLAYNAME);

   ELSIF UPDATING THEN
      UPDATE U_HR.TBL_MANPOWERINFO SET
      FGUID=:new.FGUID,PSNID=:new.FID,Name=:new.FDISPLAYNAME
      WHERE FGUID=ld.FGUID;
      
   ELSIF DELETING THEN        
      DELETE U_HR.TBL_MANPOWERINFO
      WHERE FGUID=ld.FGUID;

   END IF;
END HRtableTR;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 09:52:35 | 显示全部楼层
上面是触发器对X3人员表同步,SQLPLUS编译过了,没问题,有劳帮着看看,我这边在线等我也测试一下,谁先有结果都跟上帖子.多谢
(注:我的主题没把表情去掉,现在编码中有表情图,没办法)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 10:53:40 | 显示全部楼层
有人看过帖子了吗?是否在处理给个信啊?我试了建立了触发器就不好使了,请问X3人员表是不是操作时有什么限制,比如我添加人员时X3中有什么动作?怎么对人员表处发不了哪?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 11:22:08 | 显示全部楼层
刚才建立新的表测试一下也不行,在同一个逻辑数据库下建立两个表也不能处发,我想可能是触发器的事儿,我是用系统管理员在数据库里创建的触发器,invoke batch method error, error occur during invoke ApplyUpdates method, ORA-04098: 触发器 'SYS.TRTEST' 无效且未通过重新确认,还是这样,不明白是不是触发哪个用户的表就得在哪个用户下创建触发器?不过在用户名进入数据库创建也试过了,还是不行,请起步做过触发器的技术人员看看怎么解决才好.
回复 支持 反对

使用道具 举报

发表于 2008-4-25 12:03:01 | 显示全部楼层
x3的组织机构相关表没有作什么特殊的设置。

怀疑是数据库那里的问题。建议楼主先脱离平台环境测试一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-25 13:40:58 | 显示全部楼层
是创建的问题,还是在X3中建立两个测试表,test(t1,t2,t3),test1(tt1,tt2,tt3)
测试通过了,下面是代码
CREATE OR REPLACE TRIGGER "U_HR"."TEST2" AFTER
INSERT
OR UPDATE
OR DELETE ON "U_HR"."TEST" FOR EACH ROW BEGIN
  if INSERTING THEN
     INSERT INTO U_HR.TEST1(tt1,tt2,tt3) VALUES (:new.t1,:new.t2,:new.t3);
  ELSIF UPDATING THEN
     UPDATE U_HR.test1 SET
     tt1=:new.t1,tt2=:new.t2,tt3=:new.t3
     WHERE tt1=ld.t1;      
  ELSIF DELETING THEN        
     DELETE U_HR.test1
     WHERE tt1=ld.t1;  
  end if;
END;
同步了,基本再试试我的代码就行了,等成功我把结果发上来,这也算是经验的积累吧.
回复 支持 反对

使用道具 举报

发表于 2008-4-25 14:07:56 | 显示全部楼层
好的,谢谢反馈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-28 09:03:43 | 显示全部楼层
还是不行,就是触发器找不到另外一个空间下的表,用户权限是DBA的,怎么触发不了?请问怎么跨表空间写触发器?试过了不行,在同一个表空间下可以,是不是还有什么权限才能操作另外一个表空间里的表?SQL语句可以访问的,怎么就触发器不好使?我找过很多人都不能解决此问题,请起步的工程师看看有什么办法?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-11 22:25 , Processed in 0.045412 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表