Re: BUG #1447: Sometimes rules don't work
От | Olleg Samoylov |
---|---|
Тема | Re: BUG #1447: Sometimes rules don't work |
Дата | |
Msg-id | 41FDE6A1.90609@mipt.ru обсуждение исходный текст |
Ответ на | Re: BUG #1447: Sometimes rules don't work (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-bugs |
Tom Lane wrote: > "Olleg Samoylov" <olleg@mipt.ru> writes: > >>create rule history_i as on insert to history do (update abonent set >>money=money+new.money where abonent=new.abonent); > >>insert into history (abonent,money) select abonent,-(money.money+5) as pay >>from >> ( select abonent,sum(money) as money from history where money<0 group by >>abonent) money >> where money.money+5>0; > What happens in the above is that the "new.money" placeholder is > replaced by the subselect from the INSERT command, and since the rule > fires after the insert itself is done, you get different results from > the second evaluation of the subselect. IMHO, this is incorrect. > You should be using a trigger for this sort of thing, not a rule. > Rules have their uses, but propagating copies of data from one place > to another is generally not one of them. If you don't plan to fix this, this "feature" must be well documented. -- Olleg
В списке pgsql-bugs по дате отправления: