После обновления PL / SQL Trigger между двумя пользователями - PullRequest
1 голос
/ 14 февраля 2011

У меня есть Таблица A на Схеме A и Таблица B на Схеме B.

Схема B. В Таблице B есть Информация о Продукте, взятая из Схемы A. Таблица A (это основная база данных для профиля Продуктов).

Когда происходит обновление с информацией о продуктах в схеме A. Таблица A, это обновление должно отражаться в схеме B. Таблица B?

Как мне написать триггер для нее? ..

У меня ProductID в обеих таблицах

1 Ответ

1 голос
/ 14 февраля 2011

Почему бы не создать триггер до обновления? Вставки в tableB будут фиксироваться только в случае фиксации всей транзакции.

РЕДАКТИРОВАТЬ: если вы хотите обновления в таблице B, попробуйте это:

--drop table testtab_a;

create table testtab_a
(
col1 varchar2(10) primary key,
col2 varchar2(10)
);
--drop table testtab_b;
create table testtab_b
(
col1 varchar2(10) primary key,
col2 varchar2(10)
);
insert into testtab_a values ('A', 'B');
insert into testtab_a values ('X', 'B');
insert into testtab_a values ('Z', 'C');

insert into testtab_b values ('A', 'B');
insert into testtab_b values ('X', 'B');
insert into testtab_b values ('Z', 'C');

CREATE OR REPLACE TRIGGER testtab_tr
BEFORE UPDATE
ON testtab_a REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
        update testtab_b
        set col1 = :new.col1,
        col2 = :new.col2
        where col1 = :old.col1;
end;

select * from testtab_a;
select * from testtab_b;

update testtab_a set col2 = 'H' where col1 = 'A';

EDIT2: если вам нужно перейти по схемам, вы можете использовать ссылку dblink.

Использование внутри триггера:

            update testtab_b@someSchema
            set col1 = :new.col1,
            col2 = :new.col2
            where col1 = :old.col1;

Убедитесь, что администраторы баз данных правильно настроили ваши обновления, а также любые синонимы, которые вам могут понадобиться (в зависимости от вашей среды).

Наконец, если вы пытаетесь сохранить эти 2 таблицы в «синхронизации», не забывайте о вставках и удалениях (которые также могут быть обработаны с помощью аналогичного триггера).

Это НЕ ответ на репликацию, однако, и этот подход должен использоваться очень экономно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...