From: | Tim Perdue <tim(at)perdue(dot)net> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Rule/currval() issue |
Date: | 2001-03-14 17:50:15 |
Message-ID: | 20010314115015.R670@mail.perdue.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
This is related to the plpgsql project I was working on this morning. I'm
trying to create a rule, so that when a row is inserted into a certain table,
we also create a row over in a "counter table". The problem lies in getting
the primary key value (from the sequence) so it can be inserted in that
related table.
I tried a couple different approaches. Neither works.
artifact_group_list is a table where the primary key, group_artifact_id is
SERIAL type. When I insert a row, I want to get that new value in my rule.
--
-- Define a rule so when you create a new ArtifactType
-- You automatically create a related row over in the counters table
--
CREATE RULE artifactgroup_insert_agg AS
ON INSERT TO artifact_group_list
DO INSERT INTO
artifact_counts_agg (group_artifact_id,count,open_count)
VALUES (currval('artifact_grou_group_artifac_seq'),0,0);
I get this:
ERROR: artifact_grou_group_artifac_seq.currval is not yet defined in this session
If I write the rule this way:
CREATE RULE artifactgroup_insert_agg AS
ON INSERT TO artifact_group_list
DO INSERT INTO
artifact_counts_agg (group_artifact_id,count,open_count)
VALUES (new.group_artifact_id,0,0);
...it doesn't fail with an error, but the sequence increments twice.
Tim
--
Founder - PHPBuilder.com / Geocrawler.com
Lead Developer - SourceForge
VA Linux Systems
From | Date | Subject | |
---|---|---|---|
Next Message | Roland Roberts | 2001-03-14 17:53:15 | Re: my pgsql error? |
Previous Message | George Young | 2001-03-14 17:24:12 | need to join successive log entries into one |