Re: How to avoid the Mutating Triggers ??
От | Yudha Setiawan |
---|---|
Тема | Re: How to avoid the Mutating Triggers ?? |
Дата | |
Msg-id | 004c01c2d887$d801b3d0$ea00a8c0@yudha обсуждение исходный текст |
Ответ на | Re: How to avoid the Mutating Triggers ?? (Stephan Szabo <sszabo@megazone23.bigpanda.com>) |
Ответы |
Re: How to avoid the Mutating Triggers ??
|
Список | pgsql-admin |
Dear Szabo, You were wrote; > Well, what have you tried? For the simple > case (pointer is not changing), a not terribly > efficient version might be something like: > > create or replace function dorecalcupd() returns trigger as > 'declare > last int; > begin > SELECT INTO last qty FROM foo where pointer < NEW."pointer" ORDER BY > pointer desc LIMIT 1; > NEW.qty := last + NEW."in" - NEW."out"; > if (NEW.pointer = OLD.POINTER AND (NEW."in" != OLD."in" or NEW."out" != > OLD."out")) then > UPDATE foo set qty = (select sum(f."in") - sum(f."out") from foo f where > f.pointer<pointer) > where pointer>NEW.pointer; > end if; > return NEW; > end;' language 'plpgsql'; > > In this case the trigger does cause requests to the same trigger for the > later rows, but since only qty is changing it does nothing. > > It's more complicated when you deal with the pointer moving case. Thank's a Lot for all milist especialy for dear Stephan Szabo. I'm Sorry "Pointer" on my ilustration "IS NOT a FIELD". it's just information for me, to show you where is exactly the position of record / Pointer that I want to Change. Perhaps you have another best one, please...?? Thank You very much and, GOD Bless You All. Yudha Setiawan. VoIP No. : 628899911223344
В списке pgsql-admin по дате отправления: