Copy rows, remember old and new pkey

From: "Vlad K(dot)" <vlad(at)haronmedia(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: Copy rows, remember old and new pkey
Date: 2012-11-26 09:35:39
Message-ID: 50B337EB.2040909@haronmedia.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


Hello list,

I need to make a copy of certain rows in table A and remember the
original pkey and new pkey in some temporary table B. Basically the copy
statement is INSERT INTO a SELECT * FROM a where a.x=y;

I guess I can do it with a plpgsql function and a FOR loop statement,
because I need two insert statements, the second using returned pkey
from first, but I was wondering if there's a simpler way, perhaps using
WITH?

FOR row IN SELECT * FROM a WHERE a.x=123 LOOP
INSERT INTO a (x, y, z) VALUES (row.x, row.y, row.z) RETURNING pkey
INTO new_pkey;
INSERT INTO b (old_id, new_id) VALUES (row.pkey, new_pkey);
END LOOP;

Thanks,

--

.oO V Oo.

Work Hard,
Increase Production,
Prevent Accidents,
and
Be Happy! ;)

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Glyn Astill 2012-11-26 09:43:55 Re: Npgsql
Previous Message Albe Laurenz 2012-11-26 08:33:06 Re: Restore postgres to specific time