From: | Ray O'Donnell <ray(at)rodonnell(dot)ie> |
---|---|
To: | 'PostgreSQL' <pgsql-general(at)postgresql(dot)org> |
Subject: | Resetting identity columns |
Date: | 2019-04-22 15:30:58 |
Message-ID: | 5db0ed5c-00ba-65fa-92f0-7e02c1495d18@rodonnell.ie |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi all,
I'm probably doing something silly.... I'm migrating data from one
database table to another, where the old table used a SERIAL primary key
and the new one uses GENERATED BY DEFAULT AS IDENTITY. Having loaded the
data into the new table, I need to reset the underlying sequence so that
it picks up from the highest existing value.
I'm using PostgreSQL 11.2 on Debian 9.
I've tried:
=# alter table orders alter column order_id restart with (
select max(order_id) + 1 from orders);
ERROR: syntax error at or near "("
LINE 1: ...r table orders alter column order_id restart with (select ma...
I also tried it with a DO block:
=# do language plpgsql $$
$# declare m_max_id bigint;
$# begin
$# select max(order_id) + 1 from orders into m_max_id;
$# alter table orders alter column order_id restart with m_max_id;
$# end;
$# $$;
ERROR: syntax error at or near "m_max_id"
LINE 5: ...er table orders alter column order_id restart with m_max_id;
What am I missing?
I should add that this is part of a larger migration script; otherwise I
could just do it by hand the command line.
Thanks in advance,
Ray.
--
Raymond O'Donnell // Galway // Ireland
ray(at)rodonnell(dot)ie
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2019-04-22 15:45:08 | Re: Resetting identity columns |
Previous Message | Scot Kreienkamp | 2019-04-22 15:30:01 | RE: Streaming Replication |