Как обновить значение Ссылка на дочернюю запись найдена в Oracle - PullRequest
0 голосов
/ 05 июля 2018

Я хочу обновить таблицу данных кого-то Но эта таблица Ссылка на какую-то одну найденную дочернюю запись Я ищу какой-то сайт 6 час, но я не могу найти решение И никогда дочерняя запись Не удаляйте его.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018
create table test1(
group_name varchar(20) primary key
);

create table test2(
seq number primary key,
group_name references test1(group_name)
);

commit;


insert into test1 values('test');

commit;


 select * from test1;


 insert into test2 values(1,'test');

 select * from test2;

 create trigger update_cascade
 after update of group_name on test1
 for each row
 BEGIN
    update test2 
    set group_name=:new.group_name
    where group_name=:old.group_name;
 END;
 /

 commit;

  select * from test2;

  update test1 set group_name='best' where group_name='test';

  select * from test1;

  select * from test2;

если остановится

ALTER TRIGGER MEETNOW.update_cascade disable;
drop trigger update_cascade;
commit;

Я надеюсь, что некоторые новички, как я, помогут.

0 голосов
/ 05 июля 2018

Если вы хотите, чтобы изменения, которые вы вносите в родительскую таблицу, каскадно касались дочерних таблиц, то вы должны явно указать внешнему ключу дочерней таблицы CASCADE на UPDATE или DELETE. Как это:

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
     FOREIGN KEY (column1, column2, ... column_n)
     REFERENCES parent_table (column1, column2, ... column_n)
     ON UPDATE CASCADE
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...