Mam trigera i procedure. Po zmianie danych (update) w tabeli
tbl_dokument jest wywolana w wyzwalaczu do tej tabeli (after update)
procedura ktora pobiera z tego modyfikowanego wiersza dane z
pozostałych kolumn.
W efekcie takiej operacji dostaje komunikat:
Row 2: ORA-04091: table GAZIK.TBL_DOKUMENT is mutating, trigger/
function may not see it
Myslalem ze after update to juz jest zapis zatwierdzony i mozna sie do
niego dostac. W tej chwili zrobilem tak ze dane ktore pobieral select
w procedurze sa przekazywane przez trigger jako parametry wejsciowe
procedury.
Probowałem z kursorem (tak na ślepo) i efekt ten sam
Czy da się to zrobić bez przekazywania danych jako parametry?
Pozdr Wito
Wito,
Pokaz kod.
Thomas
> Mam trigera i procedure. Po zmianie danych (update) w tabeli
> tbl_dokument jest wywolana w wyzwalaczu do tej tabeli (after update)
> procedura ktora pobiera z tego modyfikowanego wiersza dane z
> pozostałych kolumn.
> W efekcie takiej operacji dostaje komunikat:
> Row 2: ORA-04091: table GAZIK.TBL_DOKUMENT is mutating, trigger/
> function may not see it
Jeżeli to jest trigger for each row to tablica jest jeszcze w trakcie
zmian. Zazwyczaj w takiej sytuacji zapisuję sobie w triggerze for each
row wszystkie potrzebne dane do tabeli tymczasowej, a w triggerze for
statement korzystam z nich do wykonania niezbędnych operacji. W Oracle
11 możesz skorzystać z compound triggers i uprościć trochę tą procedurę.
--
Łukasz Ledóchowski
GG:503647 luk...@tlen.pl
OK dzieki. Zostawie tak jak jest czyli podam 5 wartosci jako parametry
do procedury i tez bedzie dobrze. Szkoda ze bezpłatny Firebird sobie z
czymś takim radzi a Oracle nie.
>OK dzieki. Zostawie tak jak jest czyli podam 5 wartosci jako parametry
>do procedury i tez bedzie dobrze. Szkoda ze bezpłatny Firebird sobie z
>czymś takim radzi a Oracle nie.
Tu masz jak to obejść:
http://asktom.oracle.com/tkyte/Mutate/
--
Sławomir Szyszło
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych