| From: | John DeSoi <desoi(at)pgedit(dot)com> |
|---|---|
| To: | aarni(at)kymi(dot)com |
| Cc: | pgsql-sql(at)postgresql(dot)org |
| Subject: | Re: Copying a row within table |
| Date: | 2006-03-15 01:11:32 |
| Message-ID: | FEC4E58C-74CA-41B3-AE01-92E13787EBB8@pgedit.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
On Mar 14, 2006, at 2:19 AM, Aarni Ruuhimäki wrote:
> testing=# INSERT INTO foo (foo_1, foo_2, foo_3 ...) (SELECT foo_1,
> foo_2,
> foo_3 ... FROM message_table WHERE foo_id = 10);
> INSERT 717286 1
> testing=#
>
> Is there a fast way to copy all but not the PK column to a new row
> within the
> same table so that the new foo_id gets its value from the sequence ?
Here is an example using a plpgsql function:
create or replace function test_duplicate (p_id integer)
returns integer as $$
declare
tt test%rowtype;
begin
select into tt * from test where id = p_id;
tt.id := nextval(pg_get_serial_sequence('test', 'id'));
insert into test values (tt.*);
return tt.id;
end;
$$ language plpgsql;
John DeSoi, Ph.D.
http://pgedit.com/
Power Tools for PostgreSQL
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Aarni Ruuhimäki | 2006-03-15 08:35:27 | Re: Copying a row within table |
| Previous Message | Alvaro Herrera | 2006-03-14 23:11:18 | Re: Savepoint/Rollback in functions |