У меня есть несколько таблиц Oracle, которые представляют отношения родитель-потомок. Они выглядят примерно так:
create table Parent (
parent_id varchar2(20) not null primary key
);
create table Child (
child_id number not null primary key,
parent_id varchar2(20) not null,
constraint fk_parent_id
foreign key (parent_id)
references Parent (parent_id)
);
Это живая база данных, и ее схема была разработана давно, исходя из предположения, что поле parent_id
будет статичным и неизменным для данной записи. Теперь правила изменились, и мы действительно хотели бы изменить значение parent_id
для некоторых записей.
Например, у меня есть эти записи:
Parent:
parent_id
---------
ABC123
Child:
child_id parent_id
-------- ---------
1 ABC123
2 ABC123
И я хочу изменить ABC123
в этих записях в обеих таблицах на другое.
Насколько я понимаю, нельзя написать оператор обновления Oracle, который будет обновлять родительскую и дочернюю таблицы одновременно, и, учитывая ограничение FK, я не уверен, как лучше обновить мою базу данных. В настоящее время я отключаю ограничение fk_parent_id
, обновляю каждую таблицу независимо, а затем включаю ограничение.
Есть ли лучший, одношаговый способ обновить этот контент?