创建一个触发器,当表a中某条数据被更改时,将此条修改记录插入到另一张表中,求如何实现???

russ44 2016-03-02 05:39:51
创建一个触发器,当表a中某条数据被更改时,将此条修改记录插入到另一张表中,求如何实现???
...全文
2590 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
russ44 2016-03-04
  • 打赏
  • 举报
回复
非常感谢 之前是表受其他约束了
russ44 2016-03-03
  • 打赏
  • 举报
回复
非常谢谢,那如果test_bak中再增加一个字段modify_time来记录表test每次数据修改的时间应该怎么做呢
卖水果的net 2016-03-03
  • 打赏
  • 举报
回复

SQL> 
SQL> create table test(id int , name varchar(10));
Table created
SQL> create table test_bak(id int , name varchar(10));
Table created
SQL> create trigger test_up
  2  before update on test
  3  for each row
  4  begin
  5      insert into test_bak(id , name)values(:old.id , :old.name);
  6  end ;
  7  /
Trigger created
SQL> begin
  2      insert into test(id,name) values(1,'lisi');
  3      insert into test(id,name) values(2,'zhang');
  4      commit ;
  5  end;
  6  /
PL/SQL procedure successfully completed
SQL> update test set name = 'zhangsan' where id = 2 ;
1 row updated
SQL> select * from test ;
                                     ID NAME
--------------------------------------- ----------
                                      1 lisi
                                      2 zhangsan
SQL> select * from test_bak ;
                                     ID NAME
--------------------------------------- ----------
                                      2 zhang
SQL> drop table test purge ;
Table dropped
SQL> drop table test_bak purge ;
Table dropped

SQL> 
russ44 2016-03-03
  • 打赏
  • 举报
回复
就是用oracle如何实现呢?
leslie_laughing 2016-03-03
  • 打赏
  • 举报
回复
人家SQL都给你写出来了。。 增加个时间你就在建表的时候增加个时间字段 触发器里再把当前时间插入进去就OK了 create table test_bak(id int , name varchar(10),mod_date date); insert into test_bak(id , name)values(:old.id , :old.name, sysdate);
lhdz_bj 2016-03-02
  • 打赏
  • 举报
回复
建议参照oracle语法去实现,只有这样才能提高自己的能力和水平。

17,377

社区成员

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

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