Witam, w poprzednim poście mi pomogliście mam nadzieje że teraz też znajde pomoc. Tym razem chodzi o triger ponieważ nie jestem pewien do czego odnosi się błąd i jak to obejść. Mianowicie mam Triger.
create or replace trigger zwieksz_stan
after insert on DOKUMENT_PZ
for each row
declare
var_indeks_skladnika varchar2(50);
VAR_ID_SKLADNIK INT;
VAR_ID_DOK INT;
VAR_ID_MAGAZYN_SKLADNIK INT;
VAR_PRZYJECIE INT;
VAR_STAN INT;
-- local variables here
begin
SELECT MAX(ID_DOKUMENT_PZ) INTO VAR_ID_DOK FROM DOKUMENT_PZ;
SELECT DOKUMENT_PZ.SKLADNIK_KF INTO VAR_ID_SKLADNIK FROM DOKUMENT_PZ WHERE ID_DOKUMENT_PZ = 2;
SELECT SKLADNIK.INDEKS INTO var_indeks_skladnika FROM SKLADNIK WHERE SKLADNIK.ID_SKLADNIK=VAR_ID_SKLADNIK;
SELECT DOKUMENT_PZ.ILOSC_PRZYJETA INTO VAR_PRZYJECIE FROM DOKUMENT_PZ WHERE ID_DOKUMENT_PZ = 2;
SELECT ID_MAGAZYN_SKLADNIK INTO VAR_ID_MAGAZYN_SKLADNIK
FROM MAGAZYN_SKLADNIK
INNER JOIN SKLADNIK
ON MAGAZYN_SKLADNIK.SKLADNIK_KF=SKLADNIK.ID_SKLADNIK
WHERE SKLADNIK.INDEKS=var_indeks_skladnika;
SELECT STAN_MAGAZYN INTO VAR_STAN FROM MAGAZYN_SKLADNIK
INNER JOIN SKLADNIK
ON MAGAZYN_SKLADNIK.SKLADNIK_KF=SKLADNIK.ID_SKLADNIK
WHERE SKLADNIK.INDEKS=var_indeks_skladnika;
UPDATE MAGAZYN_SKLADNIK SET STAN_MAGAZYN=VAR_STAN+VAR_PRZYJECIE
WHERE ID_MAGAZYN_SKLADNIK=VAR_ID_MAGAZYN_SKLADNIK ;
end zwieksz_stan;
po uruchomienu go wystepuje błąd : "...table system.DOKUMENT_PZ is mutating, triger/funkction may not see it ..." Miał bym prośbę o wyjaśnienie tego co jest tutaj źle. Triger Before odpada.