Я не понимаю, откуда возникла ошибка ...
Следующая ошибка отображается в моем коде. Я пытался найти, но не нашел
ничего полезного.
Ошибка запуска в строке: 31 в команде -
удалить из Item_Requisite, где Item_ID = 104
Сообщение об ошибке -
ORA-04091: таблица DB20168002.ITEM_REQUISITE мутирует, триггер / функция могут ее не видеть
ORA-06512: в "DB20168002.TR", строка 2
ORA-04088: ошибка во время выполнения триггера 'DB20168002.TR'
drop table Item_Master;
drop table Item_Requisite;
create table Item_Master(Item_ID number primary key,Description varchar2(50),Bal_Stock number);
insert into Item_Master values(101,'keyboard',80);
insert into Item_Master values(102,'lathe_machine',70);
insert into Item_Master values(103,'compass',100);
insert into Item_Master values(104,'compass',90);
insert into Item_Master values(105,'Ammeter',60);
create table Item_Requisite(Item_ID number primary key,Dept_Code varchar2(50),Quantity number);
insert into Item_Requisite values(101,'cs',30);
insert into Item_Requisite values(102,'mech',20);
insert into Item_Requisite values(103,'civil',25);
insert into Item_Requisite values(104,'chem',35);
insert into Item_Requisite values(105,'elect',80);
create or replace trigger tr
before delete
on
Item_Requisite
for each row
begin
MERGE INTO Item_Master t1
USING Item_Requisite t2
ON (t1.Item_ID=t2.Item_ID)
WHEN MATCHED THEN
UPDATE SET t1.Bal_Stock=t1.Bal_Stock-t2.Quantity
where t1.Item_ID=104;
end;
/
delete from Item_Requisite where Item_ID=104;
/
select * from Item_Master;