我创建了两个表:
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;
但是当我运行此触发器时,系统返回一个表突变错误