From: | "Tomi NA" <hefest(at)gmail(dot)com> |
---|---|
To: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | ALTER SEQUENCE ... RESTART WITH [variable] problem |
Date: | 2006-05-20 07:52:29 |
Message-ID: | d487eb8e0605200052n12e6e202jcd97f60020f9d6ad@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
I need to generate a couple of dozen statements reseting my sequences
so that they're next values are greater than the biggest existing ids.
The problem is, I can't even form a statement to update one sequence.
This is what I tried:
CREATE OR REPLACE FUNCTION init_sequences() RETURNS void AS
$BODY$
DECLARE
next_id_table1 INTEGER;
BEGIN
SELECT INTO next_id_table1 MAX(id)+1 FROM table1;
ALTER SEQUENCE pk_table1 RESTART next_id_table1;
END;
$BODY$
LANGUAGE 'plpgsql';
The problem seems to be the ALTER statement:
ERROR: syntax error at or near "$1" at character 36
QUERY: ALTER SEQUENCE pk_table1 RESTART $1
CONTEXT: SQL statement in PL/PgSQL function "init_sequences" near line 5
If I change the ALTER statement like this
ALTER SEQUENCE pk_table1 RESTART 200;
it works. But is obviously not what I wanted.
Is there a way to get the ALTER SEQUENCE statement to use a value
stored in a variable?
t.n.a.
From | Date | Subject | |
---|---|---|---|
Next Message | Martijn van Oosterhout | 2006-05-20 07:55:42 | Re: ALTER SEQUENCE ... RESTART WITH [variable] problem |
Previous Message | Siah | 2006-05-19 19:21:28 | Re: SQL & Binary Data Questions |