Re: plpgsql - Insert from a record variable?
От | Riccardo G. Facchini |
---|---|
Тема | Re: plpgsql - Insert from a record variable? |
Дата | |
Msg-id | 20040619060330.83941.qmail@web13901.mail.yahoo.com обсуждение исходный текст |
Ответ на | plpgsql - Insert from a record variable? ("Phil Endecott" <spam_from_postgresql_sql@chezphil.org>) |
Ответы |
Re: plpgsql - Insert from a record variable?
|
Список | pgsql-sql |
--- Phil Endecott <__> wrote: > Dear Postgresql experts, > > I'm writing a simple plpgsql function that selects a row from a > table, modifies it slightly, and inserts the modified version. This > sounds simple, but I can't find how to do the insert in a simple > generic fashion: although SELECT has a form that puts the result in a > record variable, INSERT doesn't seem to have anything similar. > > What I'd like to be able to write is something like this: > > DECLARE > R RECORD; > BEGIN > SELECT * INTO R FROM TABLE WHERE id=n; > R.something := x; > INSERT INTO TABLE R; > END I'm not sure if it will work, but have you tried either two of these forms? -- declare r record; begin select * into r from table where id = n; r.something := x; insert into table select r; end; -- declare r record; begin select * into r from table where id = n; r.something := x; insert into table select r.*; end; > > But as far as I can see the only syntax that is allowed for INSERT is > the normal INSERT INTO TABLE (x,y,z) VALUES (a,b,c). To achieve what > I want to do I'd need to iterate over the fields of the record (how?) > and build up the string of the INSERT query. > > It seems odd that SELECT can use a record variable but INSERT can't, > so I wonder if I have missed something. Any suggestions? > > Thanks in advance for any help anyone can offer. > > Regards, > > --Phil. > > ---------------------------(end of > broadcast)--------------------------- > TIP 7: don't forget to increase your free space map settings regards, ===== Riccardo G. Facchini
В списке pgsql-sql по дате отправления: