CREATE OR REPLACE TRIGGER XI.TRG_INSERT_ORGN
BEFORE INSERT
ON XI.ORGN
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
beginif length(:new.orgn_id)=7 then
insert into cst@XJ_2_XIJ values(
:new.orgn_no,
substr(:new.orgn_id,1,5),
:new.orgn_id,
:new.dpt_nm,
null,
'1',
'01',
'A',
:new.dpt_nm,
null,
null,
'sys',
sysdate,
'sys',
sysdate,
null,null,null,null,null,null,null,null);
elsif length(:new.orgn_id)=5 then
if substr(:new.orgn_id,1,3)='001' then
insert into org@XJ_2_XIJ values(
:new.orgn_no,
:new.orgn_no,
'00',
:new.orgn_id,
:new.dpt_nm,
:new.dpt_nm,
null,
'A',
'20',
null,
null,
null,
null,
null,
null,
:new.orgn_id,
null,
null,
null,
'1',
null,
null,
null,
null,
null,
null,
'SYS',
sysdate,
'SYS',
sysdate);
insert into cstver@XJ_2_XIJ values(
:new.orgn_id,
:new.orgn_no,
'A',
'20',
:new.dpt_nm,
null,
'SYS',
sysdate,
null,
null,
:new.dpt_nm);
else
insert into cst@XJ_2_XIJ values(
:new.orgn_no,
'000',
:new.orgn_id,
:new.dpt_nm,
null,
'1',
'01',
'A',
:new.dpt_nm,
null,
null,
'SYS',
sysdate,
'SYS',
sysdate,
null,null,null,null,null,null,null,null);
end if;
end if;
end;
/操作也不复杂,并发也没有,更谈不上死锁。两台服务器也是在局域网内,木有网络延迟。
但是就是数据更新很慢,十几分钟了都没结果。
囧啊~之前也做过插入更新删除的触发器,当时是很快的,而且也是整张表的数据全部读一遍。
求高人指导!!!万分感谢!!!
解决方案 »
- 数据查询问题
- 关于long raw
- DROP某種類型(TABLE,VIEW....)時哪些會被放入RECYCLEBIN?(急...在綫等)
- 异构:关于oracle连接SQLServer的问题,
- 菜鸟提问:使用游标时数据的存取方式
- 一个关于oracel计算周末数的问题!!急啊!我们头等着要结果呢!
- 关于oracle9后台服务的问题(简单)
- 关于在触发器中给自增型字段赋值的问题!
- 请问如何从一个函数中返回一个记录集
- 使用EXP导出DMP文件,提示“导出成功终止,但出现警告”,求解释
- 求问 ASP 连接 ORACLE 的问题
- 两个表a和b, a.c1和b.c1是关联的,想建一个a和b当作同一个表的唯一索引或主键的
如果需要在数据库之间同步数据,推荐使用物化视图。
或者通过JOB+存储过程方式来处理。
触发器与引起该触发的操作为同一个事务。
只有提交后,其它数据库才能看到相关数据。
意思是还要在触发器的后面加个 commit 么?我试试!!!
老大 触发器不能用commit的。
PRAGMA AUTONOMOUS_TRANSACTION;