askel <dummy666@xxxxxxx> writes: > Hello everybody! > I'm having problem with postgresql 8.3 (not sure if it is related to > this particular version). Suppose we have accounting system database > with the following rule (no other rules are there): > create or replace rule update_or_create_balance as > on insert to ledger when exists (select 1 from ledger where > account=new.account) do instead update ledger set debit=debit > +new.debit, credit=credit+new.credit, balance=balance+new.balance > where account=new.account; > What could be the reason of the following considering ledger table is > empty: > insert into ledger values(1,100,0,100); > select * from ledger; > 1 | 200.00 | 0.00 | 200.00 > (1 row) You missed reading the bit in the docs where it says that a query added by ON INSERT is done after the original query. In the above example, the WHEN clause will *always* succeed. regards, tom lane -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general