怎样在oracle里捕捉要更新的内容

vitamines 2006-11-17 10:57:47
现要捕捉一个表的更新操作
如果有insert操作,要将insert的内容处理一下再插入
有delete操作,则把delete的内容备份到另外的表后再执行delete
有update操作,则把update前和update后的内容也执行备份

在sqlServer中有两个系统表"INSERTED"和"DELETED"来辅助完成这个功能
比如建立一个insert的触发器
在触发器中用select * from inserted 就可以取道更新的操作了

请问在oracle中怎样才能捕捉到更新的内容?
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamx 2006-11-17
  • 打赏
  • 举报
回复
例:
if inserting and :new.pr_process = 'Y' then
insert into pr_process_logs
values(1,
pr_process_seq.nextval,
:new.pr_pr,
:new.pr_process,
user,
sysdate);
elsif deleting then
insert into pr_process_logs
values(4,
pr_process_seq.nextval,
:old.pr_pr,
:old.pr_process,
user,
sysdate);
elsif updating then
insert into pr_process_logs
values(2,
pr_process_seq.nextval,
:old.pr_pr,
:old.pr_process,
user,
sysdate);
insert into pr_process_logs
values(3,
pr_process_seq.currval,
:new.pr_pr,
:new.pr_process,
user,
sysdate);
end if;
iamx 2006-11-17
  • 打赏
  • 举报
回复
对于 insert 和 delete, 你可以建一 before 触发器,处理 :new 表的内容. 对于 Update, 你可以利用 :new and :old 表的内容。
iamx 2006-11-17
  • 打赏
  • 举报
回复
Oracle 有 before 和 after 触发器及 new, old 表。
jdsnhan 2006-11-17
  • 打赏
  • 举报
回复
可以通过触发器来帮助完成,但是,太耗系统资源了。

17,377

社区成员

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

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