Oracle:得到错误“表正在变异”

时间:2018-11-22 01:40:37

标签: oracle plsql database-trigger

我创建了两个表:

CREATE TABLE "PARLAMENTO2018"."IMPIEGATO"
(
    "NOME" VARCHAR2(20 BYTE) NOT NULL ENABLE, 
    "STIPENDIO" NUMBER, 
    "NUMDIP" NUMBER, 
    CONSTRAINT "IMPIEGATO_PK" 
        PRIMARY KEY ("NOME")
    CONSTRAINT "IMPIEGATO_DIPARTIMENTO_FK1" 
        FOREIGN KEY ("NUMDIP")
        REFERENCES "PARLAMENTO2018"."DIPARTIMENTO" ("NUMDIP")
);

CREATE TABLE "PARLAMENTO2018"."DIPARTIMENTO" 
(
    "NUMDIP" NUMBER NOT NULL ENABLE, 
    "IMPIEGATO" VARCHAR2(20 BYTE), 
    CONSTRAINT "DIPARTIMENTO_PK" 
        PRIMARY KEY ("NUMDIP")
    CONSTRAINT "DIPARTIMENTO_IMPIEGATO_FK1" 
        FOREIGN KEY ("IMPIEGATO")
        REFERENCES "PARLAMENTO2018"."IMPIEGATO" ("NOME")
);

现在,我想创建一个触发器,以将受雇者的(薪金)工资(薪金)设置为与本部门(部门)的经理薪金相同。

我只写了触发器的这一部分

create or replace trigger reimposta_stipendio
before update on impiegato
for each row 


begin

  for c in(
    select stipendio
    from impiegato
    where nome=(
      select impiegato
      FROM dipartimento
      where numdip=(
        select numdip
        from impiegato
        where nome = :new.impiegato)))

  loop
    dbms_output.put('Stipendio: '||c.stipendio);
  end loop;


  null;
end;

但是当我运行此触发器时,系统返回一个表突变错误

0 个答案:

没有答案