Обновление столбца внешнего ключа - PullRequest
0 голосов
/ 12 октября 2018

Существует две таблицы:

tblInvestType(Parent table) and
tblInvestTypeComp(Child table)

Столбец tblInvestTypeComp.type_code - это внешний ключ, ссылающийся на tblInvestType.type_code.

Как создать триггер, такой, чтобы при любом обновлениив значениях столбца родительской таблицы (tblInvestType) type_code то же самое отражается в столбце дочерней таблицы (tblInvestTypeComp) type_code?

Примечание. Все это в Oracle.

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Это плохой дизайн.Первичные ключи должны быть неизменными.Но если у вас есть требование, вот решение:

Create trigger upd_trg after update on tblInvestType
 for each row
Begin
    Update tblInvestTypeComp
    Set type_code =:new.type_code
    Where type_code =:old.type_code;
End;
0 голосов
/ 12 октября 2018

Вот решение, которое я получил:

create or replace trigger tblInvestType_update_type_code
after update of type_code on tblInvestType
for each row
begin
update tblInvestTypeComp
set type_code = :new.type_code
where type_code = :old.type_code;
end;
0 голосов
/ 12 октября 2018

вы можете попробовать следующее

set constraint <constraint name> deferred;
update primary key ...
update foreign key column to match the updated primary key....
commit;

, чтобы сделать это, внешний ключ должен быть определен как отложенный

...