Невозможно обновить сложное представление после определения вместо Trigger в Oracle.ORA-01779: невозможно изменить столбец, который сопоставляется с таблицей без сохранения ключа - PullRequest
0 голосов
/ 26 октября 2018

Я получаю сообщение об ошибке при обновлении сложного представления даже после создания вместо триггера.

ОШИБКА:

ORA-01779: невозможно изменить столбец, сопоставленный стаблица без сохранения ключа

ОБНОВЛЕНИЕ В СЛОЖНОМ ВИДЕ:

update employee_dep
  set dname='Admin',
      deptno=506
where empno=103;

INSTEAD OF TRIGGER (успешно создан):

create or replace trigger trigg_namew 
instead of insert on employee_dep
for each row
declare 
  rcount number;
begin
  select count(*) into rcount from employ where empno = :new.empno;
  if (rcount = 0) then
    insert into employ (empno,deptno) values (:new.empno, :new.deptno);
  else
    update employ
      set deptno = :new.deptno
    where empno = :old.empno and deptno = :old.deptno;
  end if;
  select count(*) into rcount from department where deptno = :new.deptno;
  if(rcount = 0) then
    insert into department values (:new.deptno , :new.dname);
  else
    update department
      set dname = :new.dname
    where deptno = :old.deptno and dname = :old.dname;
 end if;
end;

Ответы [ 2 ]

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

Вы выпускаете обновление для сложного представления с триггером вместо триггера, который срабатывает только при вставке.

Изменить на ВМЕСТО ОБНОВЛЕНИЯ

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

Может быть, это "вместо вставки".

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