как обновить несколько таблиц в оракуле БД? - PullRequest
0 голосов
/ 03 июня 2010

Я использую две таблицы в моем оракуле 10g. первая таблица содержит ключевое слово count, id (первичный ключ), а вторая таблица содержит id timestamp ..

но я делаю любые изменения в первой таблице (ключевое слово, количество), это отразится на моей второй метке времени таблицы .. я использую 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) 
);

как обновить одну таблицу со ссылкой на другую таблицу.

помогите мне, плз ...

Ответы [ 2 ]

1 голос
/ 03 июня 2010

Используйте триггер после вставки или обновления для таблицы1 для управления таблицей 2.

0 голосов
/ 03 июня 2010

Для этого можно использовать вместо .

Для этого вы выполните следующий процесс

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