前面你知道怎么做了.把每次修改的记录都插入到T2表. 思路:
在T1表上建一个触发器. 当修改数据的时候.把原来的数据插入到T2表中.
create or replace trigger trig_name
after update on T1
for each row
begin
insert into T2(字段1,字段2,字段3........)
values(:old.字段1,:old.字段2,:old.字段3........);
end ;
在T1表上建一个触发器. 当修改数据的时候.把原来的数据插入到T2表中.
create or replace trigger trig_name
after update on T1
for each row
begin
insert into T2(字段1,字段2,字段3........)
values(:old.字段1,:old.字段2,:old.字段3........);
end ;
解决方案 »
- pl/sql developer不能导出表
- LINUX下Oracle数据库磁盘规划要注意什么,我们用EVA4400
- toad 能直接执行SQLPLUS 的指令吗?
- 大家好,问个关于ORACLE存储过程写法的问题,请多多指教!
- 有关PLSQL Developer工具的问题
- 在其他方案下创建对象权限不够问题?
- 急!!在线等。我的数据库oracle817,字段为varchar2(4000),为什么最多只能装600多个汉字。
- 请问在oracle中用一个表的id为a记录更新id为b记录,怎么写sql语句?
- 菜鸟的问题:oracle怎么样备份数据表啊,怎样才能连上OMS? 需要怎样配置呢?
- 求解存储过程传clob类型参数过长时报错的问题
- network文件夹找不到listener.ora文件,服务里也没有OracleOraHome90TNSListener服务?(马上给分)
- oracle如何在主域控制器上安装
考虑了一下,也许触发器不行。因为修改T1表的还有其他情况,而且修改的是同一字段。比如T1中有个标志 字段,可能的数值有 0,1,2,3 对应不同的状态。修改这些值的记录要INSERT 到不同的表。不知道用触发器有没有变通的办法呢?谢谢!!
after update on T1
for each row
begin
if :new.标致字段=1 then
insert into T2(字段1,字段2,字段3........)
values(:old.字段1,:old.字段2,:old.字段3........);
elsif :new.标致字段=2 then
insert into T2(字段1,字段2,字段3........)
values(:old.字段1,:old.字段2,:old.字段3........);
elsif ...
....
end if;end ;
--触发器中可以做很多事情, 很在过程中一样的出来.
帅气~~
以前只用过简单的触发器,今天收获不少!!
再次感谢 dinya2003(OK) !!我现在选择用游标(REF CURSOR)解决这问题,已经测试通过了。
之所以没有选择触发器,是因为要考虑的方面不少,怕遗漏了,呵呵。
只是用游标效率如何呢?以前也没怎么用过,不明白。触发器的效率呢?最开始考虑用两次查询,但是查询的条件相对会复杂一些,而且还关联其他好几张表。
如果已经对表创建了索引,两次查询跟选择游标的做法进行比较,哪个效率高些呢?
谁能给个一般性的说明,谢谢!!
(很想弄清上面的疑问,所以没有结帖,不管有无其他答案,如果没有意外,明天中午前一定结帖)