oracle数据库将一个用户一张表里面的一个时间同步到另一用户一张表里面的时间字段怎么写触发器啊?

我想将oracle数据库SX1用户里面的exam表里面exam_date字段时间同步到SX2用户的report表里面的report_date字段里面,应该怎么写触发器呢?求解
我想将oracle数据库SX1用户里面的exam表里面新插入的行的exam_date字段时间值同步给SX2用户的report表里面对应行的report_date字段,exam表里面的examno字段值与report表里面的risno字段是对应的,应该怎么写触发器呢?谢谢了。

create or replace trigger sx1.tri_af_up_exam
after update of exam_date or insert or delete on exam for each row
referencing old as old new as new
begin
when updating('exam_date') then

update sx2.report set report_date=:new.exam_date;
when inserting then
insert into sx2.report (...,report_date,...) values (....,:new.exam_date,......);
when deleting then
delete sx2.report where ....

end;
/追问

我想将oracle数据库SX1用户里面的exam表里面新插入的行的exam_date字段时间值同步给SX2用户的report表里面对应行的report_date字段,exam表里面的examno字段值与report表里面的risno字段是对应的,应该怎么写触发器呢?谢谢了。

追答

create or replace trigger sx1.tri_af_up_exam
after insert on exam for each row
referencing old as old new as new
begin
update sx2.report set report_date=:new.exam_date where risno=:new.examno;
end;
/
注意sx1对sx2.report要有update权限
早应该这样把问题描述详细一些,这样别人才好帮你

追问

referencing old as old new as new 这一行是什么意思,有什么作用吗?

追答

当你进行update时,对于某个字段,它有旧值和新值,这里告诉触发器怎么去引用这个新值和旧值,例子里 :new.exam_date 就是新值引用方法,:old.exam_date是旧值的引用,旧值在你需求里用不上。

温馨提示:内容为网友见解,仅供参考
无其他回答

一个Oracle数据库中两张表的数据同步问题
比如建立一张插入数据的时间表,或者在a表的下层表中建立触发器等等。当然最好的办法还是触发器。第一个办法中想数据完全同步是不可能的,第二个办法办法稍微靠点谱。如果a,b表的所谓部分数据完全相同,那么可以考虑直接从接口部分得到数据,也就是每半小时,从接口部分得到灌入a表的数据的前100条,...

Oracle如何从一个表取时间最大值去更新另一个表?
update course set s_data=(select s_date from Student where s_no = 'sooo1'),s_course =( select s_course from Student where s_no = 'sooo1') where s_no = 's0001'

ORACLE表中已知一个时间点,找出这个时间点后最近的那行数据
(select min(时间字段- 已知时间) from 表 where 时间字段> 已知时间)

如何更新oracle数据库表中的时间字段
时间类型字段一般用to_date更新。比如 update 表名 set 时间字段=to_date('2018-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss');commit;具体的可以加where条件,上边就是个例子而已。

怎么实现oracle数据库某个表中某一列中日期的批量修改,而不修改时间...
需要用update语句。如test表中有如下数据:要将begintime改成当前日期时间,可用如下语句:12 update test set begintime=sysdate;commit;更新后结果:

oracle 中如何将一张500万数据的表从一个库快速转移到另外一个库
这两点可以实现的话,直接用insert ...select 来做就可以了,,导入前,把目标表的索引主键全删掉(记得备份,我看你说的意思目标表应该是个空表,所以这样做没有神马坏处),数据导入后再建。500万的数据,应该上不了半个小时就全部插进去了,我经常在测试库和正式库之间转换数据,数据量也是百万...

两个一样的oracle 数据库怎么实现数据定期同步?
第二种方式:如果数据同步的实时性要求不高,则可以通过定制存储过程的方式(给两个库的数据表加时间戳或者更新标志,)定时同步数据;第三种方式:通过给两个数据库的数据表加更新标志字段,以第一种方式为主以满足实时性的要求,以第二种方式为辅弥补可能存在的触发器执行更新未成功的情况。以上的方案...

Oracle数据库中对时间类型字段的检索
主要你也没说根据什么条件来查 先随便给你写个 select * from A where 时间起 in (select 时间起 from A where 主键=1)

oracle数据库执行查询“时间字段”的时候报错:ORA-01861: 文字与格式...
字段为时间?to_date('2011-04-01 00:11;11','yyyy-mm-dd hh24:mi:ss')时间做条件最好不要用等于 用范围靠谱 或者用日期

ORACLE数据库如何在没有时间字段的情况下获取新增的数据
数据库增量抽取数据。比如A表第一次抽有三条数据:1,2,3 第二次抽的时候A表里面有:1,2,3,4了。这个时候你B表里面还是1,2,3.你要单独把4抽取过来,可以直接 insert into B select * from A where A.ID not in (select B.ID from B)...

相似回答