Rule/currval() issue

Поиск
Список
Период
Сортировка
От Tim Perdue
Тема Rule/currval() issue
Дата
Msg-id 20010314115015.R670@mail.perdue.net
обсуждение исходный текст
Ответы Re: Rule/currval() issue  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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


В списке pgsql-sql по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: PL/pgSQL "compilation error"
Следующее
От: Roland Roberts
Дата:
Сообщение: Re: my pgsql error?