Re: copy record?

Поиск
Список
Период
Сортировка
От Merlin Moncure
Тема Re: copy record?
Дата
Msg-id BANLkTikNd5-b3JjyX+UTNrxHNG_1+k8S=g@mail.gmail.com
обсуждение исходный текст
Ответ на copy record?  ("Gauthier, Dave" <dave.gauthier@intel.com>)
Список pgsql-general
On Thu, May 26, 2011 at 3:23 PM, Gauthier, Dave <dave.gauthier@intel.com> wrote:
> Hi:
>
>
>
> From within a perl/DBI script, I want to be able to make a copy of a record
> in a table, changing only the value of the primary key.  I don't know in
> advance what all the columns are, just the table name.
>
>
>
> I suppose I could pull the column names for the table from the metadata,
> query the table/record for the values to copy, build an insert statement
> from all of that and run it.  But is there a simpler, more elegant way to do
> this?

there's a very easy way using the composite type method as long as you
know which field(s) are the primary key -- especially if it's say the
first column and an integer.

postgres=# \d foo
      Table "public.foo"
 Column |  Type   | Modifiers
--------+---------+-----------
 a      | integer |
 b      | integer |
Indexes:
    "foo_a_b_idx" btree (a, b)

postgres=# select foo from foo limit 1;
  foo
-------
 (1,1)
(1 row)

change 1 -> 2 textually, cast the text back to the composite and pass it back in

insert into foo select (($$(2,1)$$::foo).*);

merlin

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

Предыдущее
От: Andy Chambers
Дата:
Сообщение: Re: syntax for updating an aliased table
Следующее
От: Simon Riggs
Дата:
Сообщение: Re: Is there any problem with pg_notify and memory consumption?