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

发布于 2024-09-03 21:13:32 字数 575 浏览 4 评论 0原文

我在我的 oracle 10g 中使用两个表。第一个表有关键字、计数、id(主键),第二个表有 id、时间戳。

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

table1:

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)
);

table2:

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

如何使用另一个表的引用更新一个表..

请帮助我...

i am using two tables in my oracle 10g. the first table having the keyword,count,id(primary key) and my second table having id, timestamp..

but i am doing any chages in the first table(keyword,count) it will reflect on the my second table timestamp.. i am using id as reference for both the tables...

table1:

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)
);

table2:

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

how can update one table with reference of another table..

help me plz...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

極樂鬼 2024-09-10 21:13:33

在 table1 上使用插入或更新后触发器来管理 table2。

Use an after insert or update trigger on table1 to manage table2.

还在原地等你 2024-09-10 21:13:33

您可以使用而不是触发器来执行此操作。

为此,您可以按照以下流程

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;

You can use instead of trigger to do this.

For this you follow the below process

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 /

View created.

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 /

Trigger created.

Now with single sql statement you can update multiple tables

 SQL> update v_for_update set keyword='xyz',count = 2, timestamp = sysdate
 where id=1;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文