From: Robert Creager <Robert_Creager@LogicalChaos.org>
To: Mark Gibson <gibsonm@cromwell.co.uk>
Cc: PGSQL <pgsql-sql@postgresql.org>
Subject: Re: Implementation of a bag pattern using rules
Date: Mon, 9 Feb 2004 06:02:07 -0700
Message-ID: <20040209060207.3d208b4e.Robert_Creager@LogicalChaos.org> (raw)
In-Reply-To: <40278022.5070408@cromwell.co.uk>
References: <40278022.5070408@cromwell.co.uk>
When grilled further on (Mon, 09 Feb 2004 12:42:10 +0000),
Mark Gibson <gibsonm@cromwell.co.uk> confessed:
>
> CREATE RULE bag_abs AS ON INSERT TO bag_test
> WHERE
> EXISTS (SELECT 1 FROM bag_test WHERE item = NEW.item)
> DO INSTEAD
> UPDATE bag_test SET qty = NEW.qty WHERE item = NEW.item;
>
> CREATE RULE bag_rel AS ON INSERT TO bag_test
> WHERE
> EXISTS (SELECT 1 FROM bag_test WHERE item = NEW.item)
> DO INSTEAD
> UPDATE bag_test SET qty = qty + NEW.qty WHERE item = NEW.item;
I'm no expert, just up early. I believe both of these rules are tripping.
bag_abs is likely going first, then bag_rel, so bag_abs is inserting the record,
then bag_rel is updating it. You could verify this by deleting the two rules,
then re-creating in the opposite order, and see if your inserted values change.
How would you expect the system to choose one of the two rules, which is what
you apparently expect?
Later,
Rob
--
05:57:27 up 16:48, 3 users, load average: 2.23, 2.17, 2.16
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: Robert_Creager@LogicalChaos.org, gibsonm@cromwell.co.uk
Subject: Re: Implementation of a bag pattern using rules
In-Reply-To: <20040209060207.3d208b4e.Robert_Creager@LogicalChaos.org>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox