如何更新oracle DB中的多个表?

时间:2010-06-03 13:47:58

标签: oracle oracle10g oracle11g

我在我的oracle 10g中使用了两个表。第一个表有关键字,count,id(主键),第二个表有id,timestamp ..

但我在第一个表(关键字,计数)中进行任何更改它将反映在我的第二个表时间戳上。我使用id作为两个表的参考...

表1:

CREATE TABLE Searchable_Keywords
(KEYWORD_ID NUMBER(18) PRIMARY KEY,
KEYWORD VARCHAR2(255) NOT NULL,
COUNT  NUMBER(18) NOT NULL,
CONSTRAINT Searchable_Keywords_unique UNIQUE(KEYWORD)
);

表2:

CREATE TABLE Keywords_Tracking_Report
(KEYWORD_ID NUMBER(18),
PROCESS_TIMESTAMP TIMESTAMP(8) 
);

如何在引用另一个表的情况下更新一个表..

帮帮我吧......

2 个答案:

答案 0 :(得分:1)

在table1上使用after insert或update触发器来管理table2。

答案 1 :(得分:0)

您可以使用代替触发器执行此操作。

为此,请按照以下流程进行操作

SQL> create or replace view v_for_update
2 as
3 select e.keyword,d.id,e.count
4 from Keywords_Tracking_Report  e, Keywords_Tracking_Report  d
5 where e.id=d.id
6 /

查看已创建。

SQL> create or replace trigger tr_on_v_for_update
2 instead of update on v_for_update
3 begin
4
5 update Keyword_table set Keyword= :new.Keyword, count= :new.count
6 where id=:old.id;
7
8 update Keywords_Tracking_Report set timestamp= :new.timestamp
9 where id=:old.id;
12
13 end;
14 /

创建了触发器。

现在使用单个sql语句,您可以更新多个表

 SQL> update v_for_update set keyword='xyz',count = 2, timestamp = sysdate
 where id=1;